Come scrivere un entityreference (eg & nbsp;) a un xmlwriter, letto da xmlnodereader?
-
27-09-2019 - |
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.
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.