Comment rédiger une entité de référence (par exemple et nbsp;) à un XMLWriter, lu par XMLNODEREReader?

StackOverflow https://stackoverflow.com/questions/4056181

Question

Arrière plan
Je lis et j'écris un document XML à l'aide du lecteur et de l'écrivain, avec la logique de filtrage entre les opérations de lecture et d'écriture pour déterminer quelles pièces la lecture doit être réécrite (effectivement, il élimine quelques étiquettes) ...

Mon choix de mise en œuvre est actuellement le suivant en utilisant: XMLNODEREReader, XMLWriter et XmlNodeType

using System.Xml;

// Read every node
using (XmlNodeReader reader = new XmlNodeReader(xmlFragment)) {

    // But write out only nodes I want
    using (XmlWriter writer = XmlTextWriter.Create(sb, writerSettings)) {

        while (reader.Read()) {

            //... with filtering logic here to choose what is to be written.

            //  I do want to write out all entity references
            if (XmlNodeType.EntityReference == reader.NodeType)
                ; // but how do I do that here?
        }
    }
}

Problème
Lorsque je rencontre une référence d'entité avec le lecteur, je reçois une chaîne vide "" dans reader.Value Cependant c'est vraiment un   Valeur dans la source XML qui a été rencontrée. Il est donc détecté, mais pas disponible pour moi.

Apparemment, un cas de spécialité ou de bord:
J'ai trouvé ce qui suit L'article MSDN qui indique des références d'entité est quelque peu spécial pendant l'analyse, mais je n'ai pas pu l'utiliser vers une solution de travail. Cela semble clairsemé sur les détails - je préférerais qu'il y ait un échantillon de code pour le compléter.

Était-ce utile?

La solution

Vous pouvez référer ce lien: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx

J'espère que cela t'aides!!

Xmlreader.name Propriété
Lorsqu'il est remplacé dans une classe dérivée, obtient le nom qualifié du Node actuel.Node.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top