我有这样的XML:
<cfdi:Comprobante>
<cfdi:Emisor>
</cfdi:Emisor>
<cfdi:Conceptos>
<cfdi:Concepto/>
</cfdi:Conceptos>
<cfdi:Complemento>
<nomina:Nomina DATO="21">
<nomina:Percepciones>
<nomina:Percepcion/>
</nomina:Percepciones>
<nomina:Incapacidades/>
<nomina:HorasExtras/>
</nomina:Nomina>
</cfdi:Complemento>
</cfdi:Comprobante>
并需要删除节点:
<nomina:Incapacidades/>
<nomina:HorasExtras/>
,属性DATO =“21”。
我尝试了下一个代码:
Dim doc As XDocument = XDocument.Load(_xml2)
doc.Root.Element("nomina:Incapacidades").Remove()
doc.Root.Element("nomina:HorasExtras").Remove()
doc.Root.Element("nomina:Nomina").Attribute("DATO").Remove()
doc.Save(_xml2)
但无效。
如果有人可以帮助我会很好。
答案 0 :(得分:0)
试试这个
doc.Descendants.Where(Function(x) x.Name.LocalName = ("Incapacidades")).Remove()
doc.Descendants.Where(Function(x) x.Name.LocalName = ("HorasExtras")).Remove()
doc.Descendants.Where(Function(x) x.Name.LocalName = ("Nomina")).Remove()
答案 1 :(得分:0)
您可以使用XNamespace
和element local-name的组合来引用命名空间中的元素。例如,假设在实际的XML中声明了名称空间前缀nomina
:
xmlns:nomina="foo"
然后,您可以找到以HorasExtras
为前缀的nomina
元素,并使用以下内容将其删除:
Dim nomina As XNamespace = "foo"
doc.Root.Element(nomina + "HorasExtras").Remove()