Domanda

Sfondo
Sto leggendo e scrivendo un documento XML usando il lettore e lo scrittore, con la logica di filtraggio tra le operazioni di lettura e scrittura per determinare quali parti leggi dovrebbero essere scritte (effettivamente elimina alcuni tag) ...

La mia scelta di implementazione è attualmente la seguente usando: Xmlnodereader, Xmlwriter e 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?
        }
    }
}

Problema
Quando incontro un riferimento di entità con il lettore ricevo una stringa vuota "" reader.Value Tuttavia è davvero un   Valore nella sorgente XML che è stata riscontrata. Quindi è rilevato, ma non disponibile per me.

Apparentemente un caso di specialità o bordo:
Ho trovato quanto segue Articolo MSDN che indica che i riferimenti entità sono in qualche modo speciali durante l'analisi, ma non sono stato in grado di usarlo per una soluzione funzionante. Sembra scarso sui dettagli: preferirei che ci fosse un campione di codice per integrarlo.

È stato utile?

Soluzione

Puoi fare riferimento a questo link: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx

Spero che sia di aiuto!!

Xmlreader.name Proprietà
Se sovrascritto in una classe derivata, ottiene il nome qualificato del nodo corrente.node.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top