2016-09-08 3 views
0

J'ai le problème XmlTextReader classique où j'ai besoin de traiter l'étiquette dans son ensemble ainsi que l'enfant à l'intérieur. Donc, ce que je faisais était le suivant:ReadOuterXml() ajoute une balise d'attribut de format à mes données

AllRD = New XmlTextReader(New StringReader(XMLString.Trim())) ' an entire file 
Do While AllRD.Read() 
    ... loop until I find the tag I'm interested in ... 
    CellXML = AllRD.ReadOuterXml() 
    CellRD = New XmlTextReader(New StringReader(CellXML.Trim())) 
    Do While CellRD.Read() 
     ... stuff ... 

Cela me permet de parser XML intérieur avec Read et toujours accéder à l'intégralité de la balise quand je reçois au fond de la boucle. Alors maintenant, je le nourrir cette chaîne:

<c r="A1" s="2" t="s"><v>0</v></c> 

et quand j'examinerai CellXML je reçois ceci:

<c r="A1" s="2" t="s" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><v>0</v></c> 

Quelqu'un sait comment faire ce nouveau xmlns aller?

Répondre

0

Eh bien, après beaucoup plus googler je suis rentré à SO pour trouver la solution:

How to remove xmlns attribute with .NET XML API

L'astuce consiste à faire:

AllRD = New XmlTextReader(New StringReader(XMLString.Trim())) 
AllRD.Namespace = false 

Pas tout à fait évident, et franchement, ce devrait être le comportement par défaut à mon humble avis.