我在将新节点附加到xmldocument(在内存中创建)时遇到了麻烦。我已经使用XmlDocument.SelectSingleNode()方法选择了根节点,它有时会工作,而在另一个时间它会给我“System.InvalidOperationException:这个文档已经有一个'DocumentElement'节点。”错误。更多信息,这个xml文档是多级xml文档。
顺便说一句,当我尝试使用单元测试时,它工作正常(总是),当我在ASP.NET 3.5中实现它时,它变得奇怪,有时工作并且有时会失败。任何想法,为什么这可以帮助?欢迎提出所有建议和建议。
感谢。
答案 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