2013-08-04 28 views
5

Ho un XmlNode che rappresenta il seguente codice XML per esempio:Rimozione tag CDATA da XmlNode

XmlNode xml.innerText = 
<book> 
<name><![CDATA[Harry Potter]]</name> 
<author><![CDATA[J.K. Rolling]]</author> 
</book> 

voglio cambiare questo nodo in modo che esso sarà contengono il seguente:

XmlNode xml.innerText = 
<book> 
<name>Harry Potter</name> 
<author>J.K. Rolling</author> 
</book> 

Qualsiasi idee?
Grazie!

+0

è la loro ogni specifica esigenza di rimuovere tag o si vuole solo leggere i valori ? E tra l'altro post sempre il campione corretto. Mancano i tag cdata di chiusura nel tuo esempio xml. – Ehsan

+0

Esiste, viene passato a un client – Niv

+0

chi sta creando l'xml? – Ehsan

risposta

8

bene, se è esattamente come dici tu, allora è facile:

xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]",""); 
xmlDoc.Save();// xmlDoc is your xml document 
+0

Sfortunatamente, non è esattamente come l'ho detto. È nidificato in modo più complicato e questo codice (che ho provato) sembra rimuovere anche altre parti importanti – Niv

+0

@Niv puoi condividere più del tuo codice o fornirci maggiori informazioni? è la manipolazione delle stringhe che vuoi, ma non so quale esatta manipolazione ti serva. posso aiutarti se hai altre informazioni –

+2

Questo funziona, solo con una piccola modifica: invece di innerText, avevo bisogno di usare innerXML. Tnx! – Niv

1

Ti suggerisco di leggere l'intero xml e riscriverlo. È possibile leggere i valori senza cdata come questo

foreach (var child in doc.Root.Elements()) 
    { 
     string name = child.Name; 
     string value = child.Value 
    } 
+1

È possibile che l'XML sia fornito da una terza parte e debba essere pulito. –

+0

Un motivo per rimuovere CDATA è che libxml non gestisce CDATA. Ciò richiederebbe a lui di prendere i dati ricevuti da terzi e renderli un formato che funzionerà o rimuoverlo. Vedi [gnome e CDATA] (https://mail.gnome.org/archives/xml/2008-September/msg00092.html). Inoltre, [anche Gnome e CDATA] (http://www.xmlsoft.org/search.php?query=cdata&submit=Search). – Michele