创建具有多个根元素的XML文档片段

问题描述 投票:0回答:1

我知道XML文件需要一个根元素才能正常运行。我正在尝试创建XML文件的一部分,然后将其附加到仅具有一个根元素的另一种格式正确的XML文件上。

是否可以使用XmlDocumentXDocument甚至甚至使用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:文档已包含根目录节点。

.net xml vb.net linq-to-xml xmldocument
1个回答
0
投票

也许不是您要找的答案,但这是一种解决方案:

    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> 
© www.soinside.com 2019 - 2024. All rights reserved.