2016-05-25 15 views
0

でXMLから のようなノードを削除します。私はこのようなXML持っているのVB .NET

<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

は、あなたが名前空間内の要素を参照するためにXNamespaceと要素のローカル名の組み合わせを使用することができ、この

 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() 
+0

ありがとうございました、この助け。 – OSRO

0

を試してみてください。たとえば、名前空間接頭辞nominaと仮定すると、あなたの実際のXMLに従うとして宣言されました:

xmlns:nomina="foo" 

次にあなたがnominaで始まるHorasExtras要素を、見つけて、次を使用して削除することができます

Dim nomina As XNamespace = "foo" 
doc.Root.Element(nomina + "HorasExtras").Remove() 
関連する問題