2008-10-24 8 views
2

Dans l'extrait de code suivant, en utilisant XmlReader, lorsque je rencontre un élément. Je voudrais le lire tel quel, y compris tous les attributs et la décoration de l'espace de noms dans l'élément. En utilisant la propriété oXml.Name, je ne peux obtenir que le nom du tag. Y at-il une fonction pour obtenir l'étiquette elle-même?XmlReader - Lit le nœud actuel sous forme de chaîne

oXml = XmlReader.Create(path, oXmlSettings) 
While oXml.Read() 
    Select Case oXml.NodeType 
     Case XmlNodeType.Element 
     'Read Element as-is 
     If taglist.contains(oXml.Name) 
      stringbuilder.Append(oXml.ReadOuterXml()) 
     End If 
     Case XmlNodeType.Text 
     stringbuilder.Append(oXml.Value) 
    End Select 
End While 

J'ai essayé oXml.ReadOuterXml() mais elle renvoie l'élément et son subcontent. Cela peut être acceptable, mais comment puis-je rediriger mon XmlReader pour ignorer XmlNodeType.Text et XmlNodeType.EndElement qui se produira lorsque l'élément que je viens d'obtenir de ReadOuterXml a été analysé? MISE À JOUR: Pour l'extrait suivant, loc1 est dans taglist, donc écrit en utilisant ReadOuterXml, mais l'analyseur ne parvient pas à obtenir le "!" personnage.

<para> 
    Test blabla <loc1 href="test">complicated</loc1>! 
</para> 

Répondre

3

Je ne l'ai pas essayé, mais je ne serais pas attendre à ce que vous auriez à faire avancer rapidement le lecteur après avoir appelé ReadOuterXml. Je m'attendrais à l'acte de lire le XML externe pour le consommer.

Avez-vous essayé?

+0

Oui, il fait avancer rapidement, mais je crois qu'il manque l'événement suivant le EndElement. Est-ce parce que j'ai déjà fait oXml.Read()? – Vincent

+0

Appellez-vous à nouveau Lire * après * ReadOuterXml? Si oui, c'est l'appel qui vous fait du mal. –

+0

S'il vous plaît voir l'extrait de code mis à jour, je crois que Read est appelé effectivement après? – Vincent

Questions connexes