Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La clase Xml Document Object Model (DOM) es una representación en memoria de un documento XML. El DOM permite leer, manipular y modificar un documento XML mediante programación. La clase XmlReader también lee XML; sin embargo, proporciona acceso de solo lectura y no almacenado en caché. Esto significa que no hay funcionalidades para editar los valores de un atributo o contenido de un elemento, o la capacidad de insertar y quitar nodos con XmlReader. La edición es la función principal del DOM. Es la forma común y estructurada en que los datos XML se representan en memoria, aunque los datos XML reales se almacenan de forma lineal cuando se encuentra en un archivo o proceden de otro objeto. A continuación se incluyen datos XML.
Entrada
<?xml version="1.0"?>
<books>
<book>
<author>Carson</author>
<price format="dollar">31.95</price>
<pubdate>05/01/2001</pubdate>
</book>
<pubinfo>
<publisher>MSPress</publisher>
<state>WA</state>
</pubinfo>
</books>
En la ilustración siguiente se muestra cómo se estructura la memoria cuando se leen estos datos XML en la estructura DOM.
Estructura del documento XML
Dentro de la estructura del documento XML, cada círculo de esta ilustración representa un nodo, que se denomina objeto XmlNode . El objeto XmlNode es el objeto básico del árbol DOM. La clase XmlDocument , que extiende XmlNode, admite métodos para realizar operaciones en el documento como un todo (por ejemplo, cargarlo en memoria o guardar el XML en un archivo. Además, XmlDocument proporciona un medio para ver y manipular los nodos en todo el documento XML. XmlNode y XmlDocument tienen mejoras de rendimiento y facilidad de uso y tienen métodos y propiedades para:
Acceda y modifique nodos específicos del DOM, como nodos de elemento, nodos de referencia de entidad, etc.
Recupere nodos completos, además de la información que contiene el nodo, como el texto de un nodo de elemento.
Los objetos Node tienen un conjunto de métodos y propiedades, así como características básicas y bien definidas. Algunas de estas características son:
Los nodos tienen un único nodo padre, un nodo que está directamente encima de ellos. Los únicos nodos que no tienen un elemento primario son la raíz del documento, ya que es el nodo de nivel superior y contiene el propio documento y los fragmentos de documento.
La mayoría de los nodos pueden tener varios nodos secundarios, que son nodos directamente debajo de ellos. A continuación se muestra una lista de tipos de nodo que pueden tener nodos secundarios.
Documento
DocumentFragment
EntityReference (Referencia de entidad)
Elemento
Atributo
Los nodos XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction y DocumentType no tienen nodos secundarios.
Los nodos que están en mismo nivel, representados en el diagrama por los nodos book y pubinfo, son hermanos.
Una característica del DOM es cómo controla los atributos. Los atributos no son nodos que forman parte de las relaciones de padre, hijo y hermano. Los atributos se consideran una propiedad del nodo de elemento y se componen de un nombre y un par de valores. Por ejemplo, si tiene datos XML que constan de format="dollar
" asociado al elemento price
, la palabra format
es el nombre y el valor del format
atributo es dollar
. Para recuperar el format="dollar"
atributo del nodo price , llame al método GetAttribute cuando el cursor se encuentre en el nodo de price
elemento. Para obtener más información, consulte Acceso a atributos en dom.
A medida que XML se lee en la memoria, se crean nodos. Sin embargo, no todos los nodos son del mismo tipo. Un elemento de XML tiene reglas y sintaxis diferentes que una instrucción de procesamiento. Por lo tanto, a medida que se leen varios datos, se asigna un tipo de nodo a cada nodo. Este tipo de nodo determina las características y la funcionalidad del nodo.
Para obtener más información sobre los tipos de nodos generados en memoria, vea Tipos de nodos XML. Para obtener más información sobre los objetos creados en el árbol de nodos, vea Asignación de la jerarquía de objetos a datos XML.
Microsoft ha ampliado las API que están disponibles en el nivel 1 y nivel 2 del DOM del World Wide Web Consortium (W3C) para facilitar el trabajo con un documento XML. Aunque admite completamente los estándares W3C, las clases, métodos y propiedades adicionales agregan funcionalidad más allá de lo que se puede hacer mediante el DOM XML de W3C. Las nuevas clases permiten acceder a datos relacionales, lo que proporciona métodos para sincronizarlos con datos de ADO.NET, exponiendo simultáneamente datos como XML. Para obtener más información, consulte Synchronizing a DataSet with an XmlDataDocument.
El DOM es más útil para leer datos XML en la memoria para cambiar su estructura, agregar o quitar nodos, o para modificar los datos mantenidos por un nodo como en el texto contenido por un elemento. Sin embargo, hay otras clases disponibles que son más rápidas que el DOM en otros escenarios. Para obtener un acceso rápido a XML mediante un flujo sin caché y de avance único, use XmlReader y XmlWriter. Si necesita acceso aleatorio con un modelo de cursor y XPath, use la clase XPathNavigator .