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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top