我已经使用了XML并且遇到了以下问题。我有以下XML:
<cfdi:Receit xmlns:xsi="http://..." xmlns:cfdi="http://..." Certificate="20001000000200001437">
<cfdi:From nombre="My Name">
<cfdi:Country Country="USA"/>
</cfdi:From>
<cfdi:To name="Receptor Name">
<cfdi:Country Country="UK"/>
</cfdi:Receptor>
</cfdi:Receit>
我一直在尝试将一个新的节点“Export”插入到这个XML的Root中,这个节点已经保存在一个字符串中,这个节点应该看起来像这样
<cfdi:Receit xmlns:xsi="http://..." xmlns:cfdi="http://..." Certificate="20001000000200001437">
<cfdi:From nombre="My Name">
<cfdi:Country Country="USA"/>
</cfdi:From>
<cfdi:To name="Receptor Name">
<cfdi:Country Country="UK"/>
</cfdi:Receptor>
<cfdi:Export>
<tfd:ExportData xmlns:tfd="http://..." xmlns:xsi="http://..." exportCertificate="0001110111010110" ExportQuantity="12,255"/>
</cfdi:Export>
</cfdi:Receit>
是否有一种简单的方法可以将节点作为字符串插入原始XML的根目录?我一直在尝试多种方式,一种是我只是插入字符串,但是当它被导航器打开时,它似乎不构成XML作为节点的一部分。 我已经尝试过以下示例,但它们都存在新节点中需要前缀“cfdi”的问题。
Dim xdOriginal As New XDocument = "Original XML"
Dim NewNode As String = <cfdi:Export> <tfd:ExportData xmlns:tfd="http://..." xmlns:xsi="http://..." exportCertificate="0001110111010110" ExportQuantity="12,255"/> </cfdi:Export>
Dim xDoc As New XElement(XElement.Parse(NewNode)) ' Error Here
xdOriginal.Root.Add(xDoc)
答案 0 :(得分:0)
您可以使用XNamespace
变量来提供在已解析的XML字符串范围之外声明的名称空间前缀:
Dim xdOriginal As New XDocument = "Original XML"
Dim cfdi As XNamespace = "cfdi namespace URI here"
Dim newNodeContent = <tfd:ExportData xmlns:tfd="http://..." xmlns:xsi="http://..." exportCertificate="0001110111010110" ExportQuantity="12,255"/>
'use XNamespace variable to add prefix to <Export> element :'
Dim newNode = New XElement(cfdi + "Export", newNodeContent)
xdOriginal.Root.Add(newNode)