¿Cómo escribir una EntityReference (p. Ej.
-
27-09-2019 - |
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.
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.