Lectura de datos XML con XPathDocument y XmlDocument
Existen dos formas de leer un documento XML en el espacio de nombres System.Xml.XPath. La primera consiste en leer un documento XML utilizando la clase de solo lectura XPathDocument, y la segunda en leer un documento XML utilizando la clase XmlDocument editable en el espacio de nombres System.Xml.
Lectura de documentos XML con la clase XPathDocument
La clase XPathDocument proporciona una representación en memoria rápida y de solo lectura de un documento XML utilizando el modelo de datos XPath. Las instancias de la clase XPathDocument se crean utilizando uno de sus seis constructores. Estos constructores permiten leer un documento XML utilizando el objeto Stream, TextReader o XmlReader, así como la ruta string
a un archivo XML.
En el siguiente ejemplo se ilustra 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 con la clase XmlDocument
La clase XmlDocument es una representación en memoria editable de un documento XML que implementa la parte principal del nivel 1 del modelo de objetos de documento (DOM) y el nivel 2 de la parte principal del DOM del WC3. Las instancias de la clase XmlDocument se crean utilizando uno de sus tres constructores. Puede crear un objeto XmlDocument nuevo y vacío llamando al constructor de la clase XmlDocument sin ningún parámetro. Después de llamar al constructor, utilice el método Load para cargar datos XML en el nuevo objeto XmlDocument desde un objeto Stream, TextReader o XmlReader, así como la ruta string
a un archivo XML.
En el siguiente ejemplo se ilustra el uso del constructor de clase XmlDocument sin ningún parámetro y el método Load para leer un documento XML.
Dim document As XmlDocument = New XmlDocument()
document.Load("books.xml")
XmlDocument document = new XmlDocument();
document.Load("books.xml");
Determinación de la codificación de un documento XML
Se puede utilizar un objeto XmlReader para leer un documento XML y para crear los objetos XPathDocument y XmlDocument, tal y como se ha mostrado en las secciones anteriores. Sin embargo, un objeto XmlReader puede leer datos que no estén codificados y, como resultado, no proporciona ninguna información de codificación.
La clase XmlTextReader hereda de la clase XmlReader, proporciona información de codificación utilizando su propiedad Encoding y se puede utilizar para crear un objeto XPathDocument o un objeto XmlDocument.
Para obtener más información sobre la información de codificación que proporciona la clase 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 y navegar por los datos XML subyacentes, y en algunos casos, editarlos.
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 método CreateNavigator que devuelve un objeto XPathNavigator.
Edición de documentos XML con la clase XPathNavigator
Además de seleccionar, evaluar y navegar por los datos XML, la clase XPathNavigator se puede utilizar para editar un documento XML en algunos casos, basándose en el objeto que lo ha creado.
La clase XPathDocument es de solo lectura mientras que la clase XmlDocument se pueda editar y, como resultado, los objetos XPathNavigator creados a partir de un objeto XPathDocument no se pueden utilizar para modificar un documento XML, mientras que los objetos XmlDocument sí pueden. Debería utilizarse la clase XPathDocument para leer solo un documento XML. En aquellos casos en los que necesite editar un documento XML o necesite acceso a la funcionalidad adicional que proporciona la clase XmlDocument como, por ejemplo, el control de eventos, se debería utilizar la clase XmlDocument.
La propiedad CanEdit de la clase XPathNavigator especifica si un objeto XPathNavigator puede editar datos XML.
En la tabla siguiente se describe el valor de la propiedad CanEdit de cada clase.
Implementación de IXPathNavigable | Valor de CanEdit |
---|---|
XPathDocument | false |
XmlDocument | true |