我知道XML文件需要一个根元素才能正常运行。我正在尝试创建XML文件的一部分,然后将其附加到仅具有一个根元素的另一种格式正确的XML文件上。
是否可以使用XmlDocument
,XDocument
甚至甚至使用XmlDocumentFragment
创建XML文档的一部分?
我正在尝试创建的XML文件:
' Create XML Document VB.NET
Dim XMLDoc As New XmlDocument
With XMLDoc
' Add URLs
For Each Script In ScriptsList
Dim XMLUrl As XmlElement = .CreateElement("url")
XMLSchema.AppendChild(XMLUrl)
Dim XMLLoc As XmlElement = .CreateElement("loc")
XMLLoc.InnerText = Script
XMLUrl.AppendChild(XMLLoc)
Next
Debug.WriteLine(XDocument.Parse(.OuterXml))
End With
预期输出:
<url>
<loc>/js/lazyload.js</loc>
</url>
<url>
<loc>/js/lightbox.js</loc>
</url>
<url>
<loc>/js/slideshow.js</loc>
</url>
被调用一次后,XMLSchema.AppendChild(XMLUrl)
上出现错误。错误:
System.InvalidOperationException:文档已包含根目录节点。
也许不是您要找的答案,但这是一种解决方案:
Dim fs As New FileStream("C:\Scripts\testDoc.xml", FileMode.OpenOrCreate)
For Each Script In ScriptsList
Dim XMLDoc As New XmlDocument
With XMLDoc
Dim XMLUrl As XmlElement = .CreateElement("url")
XMLDoc.AppendChild(XMLUrl)
Dim XMLLoc As XmlElement = .CreateElement("loc")
XMLLoc.InnerText = Script
XMLUrl.AppendChild(XMLLoc)
' save your document fragment to the filestream'
XMLDoc.Save(fs)
' this creates a carriage return - probably a better way to do this '
fs.Write({&H0, &HD}, 0, 2)
End With
Next
fs.Close()
并且输出看起来像:
<url>
<loc>/js/lazyload.js</loc>
</url>
<url>
<loc>/js/lightbox.js</loc>
</url>
<url>
<loc>/js/slideshow.js</loc>
</url>