public override XmlNode CloneNode(bool deep)
{
XmlDataDocument clone = (XmlDataDocument)(base.CloneNode(false));
clone.Init(DataSet.Clone());
clone._dataSet.EnforceConstraints = _dataSet.EnforceConstraints;
Debug.Assert(clone.FirstChild == null);
if (deep)
{
DataPointer dp = new DataPointer(this, this);
try
{
dp.AddPointer();
for (bool fMore = dp.MoveToFirstChild(); fMore; fMore = dp.MoveToNextSibling())
{
XmlNode cloneNode;
if (dp.NodeType == XmlNodeType.Element)
cloneNode = clone.CloneTree(dp);
else
cloneNode = clone.CloneNode(dp);
clone.AppendChild(cloneNode);
}
}
finally
{
dp.SetNoLongerUse();
}
}
return clone;
}
XmlDataDocument::CloneNode ( DataPointer dp ) : XmlNode |
public void CloneNode() { XmlDataDocument doc = new XmlDataDocument(); doc.DataSet.ReadXmlSchema(new StringReader(RegionXsd)); doc.Load(new StringReader(RegionXml)); XmlDataDocument doc2 = (XmlDataDocument)doc.CloneNode(false); Assert.Equal(0, doc2.ChildNodes.Count); Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema().Substring(0, 39)); doc2 = (XmlDataDocument)doc.CloneNode(true); Assert.Equal(2, doc2.ChildNodes.Count); Assert.Equal("<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema().Substring(0, 39)); doc.DataSet.Tables[0].Rows[0][0] = "64"; Assert.Equal("1", doc2.DataSet.Tables[0].Rows[0][0].ToString()); }