System.InvalidOperationException:此文档已有“DocumentElement”节点

时间:2009-09-30 06:20:02

标签: asp.net xml

我在将新节点附加到xmldocument(在内存中创建)时遇到了麻烦。我已经使用XmlDocument.SelectSingleNode()方法选择了根节点,它有时会工作,而在另一个时间它会给我“System.InvalidOperationException:这个文档已经有一个'DocumentElement'节点。”错误。更多信息,这个xml文档是多级xml文档。

顺便说一句,当我尝试使用单元测试时,它工作正常(总是),当我在ASP.NET 3.5中实现它时,它变得奇怪,有时工作并且有时会失败。任何想法,为什么这可以帮助?欢迎提出所有建议和建议。

感谢。

3 个答案:

答案 0 :(得分:3)

您可以使用属性“DocumentElement”选择XmlDocument的根节点。或者我认为你可以使用属性“FirstChild”(未经测试)。

System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
XmlElement rootNode = doc.DocumentElement;

答案 1 :(得分:1)

这对我有用。

xmlOriginFile = New XmlDocument()
xmlTargetFile = New XmlDocument()
xmlOriginFile.Load(readFile)  //readFile is a string that hold path to xml document
xmlTargetFile.Load(writeFile) //writeFile is a string that hold path to xml document 

Dim fileNav As XPathNavigator = xmlOriginFile.CreateNavigator()
Dim fileItr As XPathNodeIterator = fileNav.Select("//data")

Dim addToDestNodes As List(Of XmlNode) = New List(Of XmlNode)

While (fileItr.MoveNext())

    Dim addNode As XmlNode = CType(fileItr.Current, IHasXmlNode).GetNode()
    addToDestNodes.Add(addNode)

End While //loop thru nodes

If addToDestNodes.Count > 0 Then

    For Each addedNode As XmlNode In addToDestNodes

        Dim addTargetNode As XmlNode = xmlTargetFile.ImportNode(addedNode, True)
        xmlTargetFile.DocumentElement.AppendChild(addTargetNode)
    Next

End If

xmlTargetFile.Save(xmlTarget) //xmlTarget is a string that hold path to xml document

答案 2 :(得分:0)

XML有一个根元素,你必须在这个根元素中添加新元素。

XmlElement eleParent = docDestn.CreateElement("EleParent");
XmlElement eleChild = docDestn.CreateElement("Item");
eleParent.AppendChild(eleChild);
XMLNode rootNode= xmlDoc.SelectSingleNode("RootEle");
rootNode.AppendChild(eleParent);

的PLP。请参阅链接以获取详细信息:http://navinpandit.blogspot.in/2016/12/exception-this-document-already-has.html