Pregunta

Fondo
Estoy leyendo y escribiendo un documento XML usando el lector y el escritor, con la lógica de filtrado entre las operaciones de lectura y escritura para determinar qué piezas se lee debe volver a escribir (efectivamente elimina algunas etiquetas) ...

Mi elección de implementación actualmente es la siguiente usando: Xmlnodeader, Escritor xml y 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
Cuando encuentro una referencia de entidad con el lector, obtengo una cadena vacía "" en reader.Value Sin embargo, es realmente un   valor en la fuente XML que se ha encontrado. Entonces se detecta, pero no está disponible para mí.

Aparentemente un caso especializado o de borde:
Encontré lo siguiente Artículo de MSDN que indica que las referencias de entidad son algo especiales mientras analizan, pero no he podido usarlo para una solución de trabajo. Parece escaso en los detalles: preferiría que haya una muestra de código para complementarla.

¿Fue útil?

Solución

Puede referir este enlace: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx

¡¡Espero que esto ayude!!

Xmlreader.name Propiedad
Cuando se anule en una clase derivada, obtiene el nombre calificado del nodo actual.node.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top