Lendo dados XML usando XPathDocument e XmlDocument

Há duas maneiras para ler um documento XML no namespace System.Xml.XPath. Uma é ler um documento XML usando a classe XPathDocument somente leitura e a outra é ler um documento XML usando a classe XmlDocument editável no namespace System.Xml.

Lendo documentos XML usando a classe XPathDocument

A classe XPathDocument fornece uma representação rápida, somente leitura e na memória de um documento XML usando o modelo de dados XPath. As instâncias da classe XPathDocument são criadas usando um de seus seis construtores. Esses construtores permitem que você leia um documento XML usando um objeto Stream, TextReader ou XmlReader, bem como o caminho string para um arquivo XML.

O exemplo a seguir ilustra o uso do construtor XPathDocument da classe string para ler um documento XML.

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

Lendo documentos XML usando a classe XmlDocument

A classe XmlDocument é uma representação editável e na memória de um documento XML que implementa o núcleo de nível 1 do DOM (Modelo de Objeto de Documento) do W3C e o nível 2 do DOM principal. As instâncias da classe XmlDocument são criadas usando um de seus três construtores. Você pode criar um objeto XmlDocument novo e vazio chamando o construtor de classe XmlDocument sem parâmetros. Após chamar o construtor, use o método Load para carregar dados XML no novo objeto XmlDocument de um Stream, TextReader ou objeto XmlReader, assim como o caminho string para um arquivo XML.

O exemplo a seguir ilustra o uso do construtor da classe XmlDocument sem parâmetros e o método Load para ler um documento XML.

Dim document As XmlDocument = New XmlDocument()  
document.Load("books.xml")  
XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

Determinando a codificação de um documento XML

Um objeto XmlReader pode ser usado para ler um documento XML e criar objetos XPathDocument e XmlDocument conforme mostrado nas seções anteriores. No entanto, um objeto XmlReader pode ler os dados que não são codificados e, como um resultado, não fornece nenhuma informação de codificação.

A classe XmlTextReader herda da classe XmlReader, fornece informações de codificação usando a propriedade Encoding e pode ser usada para criar um objeto XPathDocument ou objeto XmlDocument.

Para obter mais informações sobre as informações de codificação fornecidas pela classe XmlTextReader, consulte a propriedade Encoding na documentação de referência da classe XmlTextReader.

Criando objetos XPathNavigator

Depois que você tiver lido um documento XML em um objeto XPathDocument ou XmlDocument, poderá criar um objeto XPathNavigator para selecionar, avaliar, navegar e, em alguns casos, editar os dados de XML subjacentes.

As classes XPathDocument e XmlDocument, além da classe XmlNode, implementam a interface IXPathNavigable do namespace System.Xml.XPath. Como resultado, todas as três classes fornecem um método CreateNavigator que retorna um objeto XPathNavigator.

Editando documentos XML usando a classe XPathNavigator

Além de selecionar, avaliar e navegar dados XML, a classe XPathNavigator pode ser usada para editar um documento XML em alguns casos, com base no objeto que o criou.

A classe XPathDocument será somente leitura quando a classe XmlDocument for editável e, como resultado, os objetos XPathNavigator criados de um objeto XPathDocument não podem ser usados para editar um documento XML, enquanto que os criados de um objeto XmlDocument podem. A classe XPathDocument deve ser usada para ler um documento XML somente. Em casos onde você precisa editar um documento XML ou precisa de acesso à funcionalidade adicional fornecida pela classe XmlDocument, como tratamento de evento, a classe XmlDocument deverá ser usada.

A propriedade CanEdit da classe XPathNavigator especifica se um objeto XPathNavigator pode editar dados XML.

A tabela a seguir descreve o valor da propriedade CanEdit para cada classe.

Implementação de IXPathNavigable Valor CanEdit
XPathDocument false
XmlDocument true

Confira também