Compartir a través de


Lectura de datos XML mediante XPathDocument y XmlDocument

Hay dos maneras de leer un documento XML en el System.Xml.XPath espacio de nombres. Uno consiste en leer un documento XML mediante la clase XPathDocument de solo lectura y el otro es leer un documento XML mediante la clase XmlDocument editable en el espacio de nombres System.Xml.

Lectura de documentos XML mediante la clase XPathDocument

La XPathDocument clase proporciona una representación rápida, de solo lectura y en memoria de un documento XML mediante el modelo de datos XPath. Las instancias de la XPathDocument clase se crean mediante uno de sus seis constructores. Estos constructores permiten leer un documento XML mediante un Streamobjeto , TextReadero XmlReader , así como la string ruta de acceso a un archivo XML.

En el ejemplo siguiente se muestra el uso del constructor XPathDocument de la clase string para leer un documento XML.

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

Lectura de documentos XML mediante la clase XmlDocument

La XmlDocument clase es una representación editable en memoria de un documento XML que implementa el modelo de objetos de documento (DOM) del W3C, Nivel 1 Core y Nivel 2 Core. Las instancias de la XmlDocument clase se crean con uno de sus tres constructores. Puede crear un nuevo objeto vacío XmlDocument llamando al XmlDocument constructor de clases sin parámetros. Después de llamar al constructor, use el método Load para cargar datos XML en el nuevo objeto XmlDocument desde un objeto Stream, TextReader o XmlReader, así como la ruta de acceso string a un archivo XML.

En el ejemplo siguiente se muestra el uso del XmlDocument constructor de clases sin parámetros y el Load método para leer un documento XML.

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

Determinar la codificación de un documento XML

Un XmlReader objeto se puede usar para leer un documento XML y para crear XPathDocument objetos y XmlDocument como se muestra en las secciones anteriores. Sin embargo, un XmlReader objeto puede leer datos que no están codificados y, como resultado, no proporciona ninguna información de codificación.

La XmlTextReader clase hereda de la XmlReader clase , proporciona información de codificación mediante su Encoding propiedad y se puede usar para crear un XPathDocument objeto o XmlDocument objeto.

Para obtener más información sobre la información de codificación proporcionada por la XmlTextReader, vea la propiedad Encoding en la documentación de referencia de la clase XmlTextReader.

Creación de objetos XPathNavigator

Después de haber leído un documento XML en un objeto XPathDocument o XmlDocument, puede crear un objeto XPathNavigator para seleccionar, evaluar, navegar y, en algunos casos, editar los datos subyacentes del XML.

Tanto las clases XPathDocument y XmlDocument, además de la clase XmlNode, implementan la interfaz IXPathNavigable del espacio de nombres System.Xml.XPath. Como resultado, las tres clases proporcionan un CreateNavigator método que devuelve un XPathNavigator objeto .

Edición de documentos XML mediante la clase XPathNavigator

Además de seleccionar, evaluar y navegar por datos XML, la XPathNavigator clase se puede usar para editar un documento XML en algunos casos, en función del objeto que lo creó.

La XPathDocument clase es de solo lectura mientras la XmlDocument clase es editable y, como resultado, XPathNavigator los objetos creados a partir de un XPathDocument objeto no se pueden usar para editar un documento XML mientras los creados a partir de un XmlDocument objeto pueden. La XPathDocument clase debe usarse solo para leer un documento XML. En los casos en los que necesite editar un documento XML o requerir acceso a la funcionalidad adicional proporcionada por la clase , como el XmlDocument control de eventos, se debe usar la XmlDocument clase .

La CanEdit propiedad de la XPathNavigator clase especifica si un XPathNavigator objeto puede editar datos XML.

En la tabla siguiente se describe el valor de la CanEdit propiedad para cada clase.

IXPathNavigable Implementación Valor de CanEdit
XPathDocument false
XmlDocument true

Consulte también