Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece comentários complementares à documentação de referência para esta API.
Observação
Recomendamos que você crie XmlReader instâncias usando o XmlReader.Create método para aproveitar a nova funcionalidade.
XmlTextReader fornece acesso somente encaminhamento e somente leitura para um fluxo de dados XML. O nó atual refere-se ao nó em que o leitor está localizado. O leitor é avançado usando qualquer um dos métodos de leitura e as propriedades refletem o valor do nó atual.
Essa classe implementa XmlReader e está em conformidade com a Linguagem de Marcação Extensível (XML) 1.0 do W3C e com as recomendações de Namespaces em XML. XmlTextReader fornece a seguinte funcionalidade:
Aplica as regras do XML bem formado.
XmlTextReadernão fornece validação de dados.Verifica se os nós
DocumentTypeestão bem formados.XmlTextReaderverifica se o DTD está bem formado, mas não valida o uso do DTD.Para elementos onde NodeType é
XmlNodeType.EntityReference, é retornado um elemento vazio únicoEntityReference(ou seja, a propriedade Value éString.Empty).
Observação
As declarações reais de entidades na DTD são chamadas de nós Entity. Quando você se refere a esses nós em seus dados, eles são chamados de nós EntityReference.
- Não expande atributos padrão.
Como o XmlTextReader não realiza as verificações extras necessárias para a validação de dados, ele fornece um analisador rápido de boa formação.
Para executar a validação de dados, use um validador XmlReader.
Para ler dados XML de um XmlDocument, use XmlNodeReader.
XmlTextReader gera um XmlException em erros de análise de XML. Depois que uma exceção é gerada, o estado do leitor não é previsível. Por exemplo, o tipo de nó informado pode ser diferente do tipo de nó real do nó atual. Use a ReadState propriedade para verificar se um leitor está no estado de erro.
Considerações de segurança
Veja a seguir as coisas a serem consideradas ao usar a XmlTextReader classe.
Exceções geradas pelo XmlTextReader podem divulgar informações de caminho que você não deseja que cheguem ao aplicativo. Seus aplicativos devem capturar exceções e processá-las adequadamente.
O processamento de DTD está habilitado por padrão. Desabilite o processamento de DTD se você estiver preocupado com problemas de negação de serviço ou se estiver lidando com fontes não confiáveis. Defina a propriedade DtdProcessing como Prohibit para desabilitar o processamento de DTD.
Se você tiver o processamento de DTD habilitado, poderá usar o XmlSecureResolver para restringir os recursos que o XmlTextReader pode acessar. Você também pode projetar seu aplicativo para que o processamento XML seja de memória e tempo restritos. Por exemplo, configure limites de tempo de espera em seu aplicativo ASP.NET.
Os dados XML podem incluir referências a recursos externos, como um arquivo DTD. Por padrão, os recursos externos são resolvidos usando um XmlUrlResolver objeto sem credenciais de usuário. Você pode proteger isso ainda mais fazendo um dos seguintes procedimentos:
Restrinja os recursos que o XmlTextReader pode acessar definindo a propriedade XmlResolver como um objeto XmlSecureResolver.
Não permita que o XmlReader abra quaisquer recursos externos definindo a propriedade XmlResolver como
null.
Os dados XML podem conter um grande número de atributos, declarações de namespace, elementos aninhados e assim por diante que exigem uma quantidade substancial de tempo para processar. Para limitar o tamanho da entrada que é enviada para o XmlTextReader, crie uma implementação personalizada de IStream e forneça-a ao XmlTextReader.
O ReadValueChunk método pode ser usado para lidar com grandes fluxos de dados. Esse método lê um pequeno número de caracteres de cada vez em vez de alocar uma única cadeia de caracteres para o valor inteiro.
Por padrão, as entidades gerais não são expandidas. Entidades gerais são expandidas quando você chama o ResolveEntity método.