Como escrever uma entidade (por exemplo, nbsp;) para um xmlwriter, lido por xmlnodeReader?
-
27-09-2019 - |
Pergunta
Fundo
Estou lendo e escrevendo um documento XML usando o leitor e o escritor, com a lógica de filtragem entre as operações de leitura e gravação para determinar quais peças lidas devem ser escritas de volta (efetivamente tira algumas tags) ...
Minha escolha de implementação atualmente é a seguinte 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 encontro uma referência de entidade com o leitor, recebo uma string vazia "" em reader.Value
No entanto, é realmente um
valor na fonte XML que foi encontrada. Portanto, é detectado, mas não está disponível para mim.
Aparentemente, um caso de especialidade ou borda:
Eu encontrei o seguinte Artigo do MSDN que indica que as referências de entidade são um pouco especiais durante a análise, mas não consegui usá -lo para uma solução de trabalho. Parece escasso nos detalhes - eu preferiria que haja uma amostra de código para complementá -lo.
Solução
Você pode consultar este link: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.name.aspx
Espero que isto ajude!!
XmlReader.name Propriedade
Quando substituído em uma classe derivada, obtém o nome qualificado do nó atual.node.