XML DOM (Document Object Model)XML Document Object Model (DOM)

La classe DOM (Document Object Model) XML è una rappresentazione in memoria di un documento XML.The XML Document Object Model (DOM) class is an in-memory representation of an XML document. Il modello DOM consente di leggere e modificare un documento XML a livello di codice.The DOM allows you to programmatically read, manipulate, and modify an XML document. Anche la classe XmlReader è in grado di leggere un documento XML, tuttavia essa fornisce un accesso non memorizzato nella cache, di tipo forward-only e di sola lettura.The XmlReader class also reads XML; however, it provides non-cached, forward-only, read-only access. Questo significa che con XmlReader non sono disponibili funzionalità per la modifica dei valori di un attributo o del contenuto di un elemento, né per l'inserimento e la rimozione di nodi.This means that there are no capabilities to edit the values of an attribute or content of an element, or the ability to insert and remove nodes with the XmlReader. La modifica è la funzione primaria del DOM.Editing is the primary function of the DOM. È il modo comune e strutturato in cui i dati XML vengono rappresentati nella memoria, sebbene i dati XML effettivi siano archiviati in modo lineare all'interno di un file o quando provengono da un altro oggetto.It is the common and structured way that XML data is represented in memory, although the actual XML data is stored in a linear fashion when in a file or coming in from another object. Di seguito sono riportati i dati XML.The following is XML data.

InputInput

<?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>   

Nella figura seguente viene illustrato come è strutturata la memoria quando questi dati XML vengono letti nella struttura del DOM.The following illustration shows how memory is structured when this XML data is read into the DOM structure.

Struttura del documento XMLXML document structure
Struttura del documento XMLXML document structure

All'interno della struttura del documento XML, ogni cerchio di questa figura rappresenta un nodo, denominato oggetto XmlNode,Within the XML document structure, each circle in this illustration represents a node, which is called an XmlNode object. XmlNodeche costituisce l'oggetto di base nell'albero DOM.The XmlNode object is the basic object in the DOM tree. La classe XmlDocument, che estende XmlNode, supporta i metodi per l'esecuzione di operazioni sul documento nella sua totalità, ad esempio il caricamento del documento in memoria o il salvataggio del documento XML in un file.The XmlDocument class, which extends XmlNode, supports methods for performing operations on the document as a whole (for example, loading it into memory or saving the XML to a file. XmlDocument costituisce inoltre un modo per visualizzare e modificare i nodi nell'intero documento XML.In addition, XmlDocument provides a means to view and manipulate the nodes in the entire XML document. XmlNode e XmlDocument sono stati entrambi migliorati dal punto di vista delle prestazioni e dell'usabilità e dispongono di metodi e proprietà per:Both XmlNode and XmlDocument have performance and usability enhancements and have methods and properties to:

  • Accedere e apportare modifiche ai nodi specifici del DOM, ad esempio ai nodi degli elementi, ai nodi di riferimento all'entità e così via.Access and modify nodes specific to the DOM, such as element nodes, entity reference nodes, and so on.

  • Recuperare interi nodi, oltre alle informazioni contenute nel nodo, quali il testo in un nodo di elemento.Retrieve entire nodes, in addition to the information the node contains, such as the text in an element node.

    Nota

    Se la struttura e le funzionalità di modifica del DOM non sono richieste da un'applicazione, le classi XmlReader e XmlWriter forniscono un accesso al flusso XML non memorizzato nella cache e di tipo forward-only.If an application does not require the structure or editing capabilities provided by the DOM, the XmlReader and XmlWriter classes provide non-cached, forward-only stream access to XML. Per altre informazioni, vedere XmlReader e XmlWriter.For more information, see XmlReader and XmlWriter.

Gli oggetti Node dispongono di un set di metodi e proprietà, oltre a caratteristiche di base ben definite.Node objects have a set of methods and properties, as well as basic and well-defined characteristics. Di seguito sono riportate alcune di queste caratteristiche.Some of these characteristics are:

  • I nodi presentano un singolo nodo padre, ovvero quello al livello immediatamente superiore.Nodes have a single parent node, a parent node being a node directly above them. Gli unici nodi che non presentano nodi padre sono al livello radice del documento, in quanto si tratta dei nodi di primo livello contenenti il documento stesso e i frammenti di documento.The only nodes that do not have a parent is the Document root, as it is the top-level node and contains the document itself and document fragments.

  • La maggior parte dei nodi può presentare più nodi figlio, ovvero quelli al livello immediatamente inferiore.Most nodes can have multiple child nodes, which are nodes directly below them. Di seguito viene riportato un elenco di tipi di nodi che possono contenere nodi figlio.The following is a list of node types that can have child nodes.

    • DocumentDocument

    • DocumentFragmentDocumentFragment

    • EntityReferenceEntityReference

    • ElementoElement

    • AttributoAttribute

    I nodi XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction e DocumentType non contengono nodi figlio.The XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction, and DocumentType nodes do not have child nodes.

  • I nodi che si trovano allo stesso livello, rappresentati nel diagramma dai nodi book e pubinfo, sono nodi di pari livello.Nodes that are at the same level, represented in the diagram by the book and pubinfo nodes, are siblings.

Una caratteristica del DOM è rappresentata dalla gestione degli attributi.One characteristic of the DOM is how it handles attributes. Gli attributi non sono nodi che fanno parte delle relazioni tra nodi padre, nodi figlio o nodi di pari livello,Attributes are not nodes that are part of the parent, child, and sibling relationships. ma sono considerati una proprietà del nodo dell'elemento e sono costituiti da una coppia composta da nome e valore.Attributes are considered a property of the element node and are made up of a name and a value pair. Se, ad esempio, si dispone di dati XML costituiti da format="dollar" associato all'elemento price, il termine format è il nome, mentre il valore dell'attributo format è dollar.For example, if you have XML data consisting of format="dollar" associated with the element price, the word format is the name, and the value of the format attribute is dollar. Per recuperare l'attributo format="dollar" del nodo price, è necessario chiamare il metodo GetAttribute quando il cursore si trova in corrispondenza del nodo dell'elemento price.To retrieve the format="dollar" attribute of the price node, you call the GetAttribute method when the cursor is located at the price element node. Per altre informazioni, vedere Accesso agli attributi nel DOM.For more information, see Accessing Attributes in the DOM.

Man mano che l'XML viene letto in memoria, vengono creati dei nodi.As XML is read into memory, nodes are created. Non tutti i nodi, tuttavia, sono dello stesso tipo.However, not all nodes are the same type. Le regole e la sintassi di un elemento dell'XML sono diverse da quelle di un'istruzione di elaborazione.An element in XML has different rules and syntax than a processing instruction. Pertanto, mentre avviene la lettura di vari dati, viene assegnato un tipo di nodo a ogni nodo.Therefore, as various data is read, a node type is assigned to each node. In base al tipo di nodo, vengono determinate le caratteristiche e la funzionalità del nodo.This node type determines the characteristics and functionality of the node.

Per altre informazioni sui tipi di nodi generati in memoria, vedere Tipi di nodi XML.For more information on the types of nodes generated in memory, see Types of XML Nodes. Per altre informazioni sugli oggetti creati nell'albero dei nodi, vedere Mapping della gerarchia di oggetti in dati XML.For more information on the objects created in the node tree, see Mapping the Object Hierarchy to XML Data.

Le API disponibili nelle raccomandazioni W3C DOM Level 1 e Level 2 sono state estese per facilitare l'uso dei documenti XML.Microsoft has extended the APIs that are available in the World Wide Web Consortium (W3C) DOM Level 1 and Level 2 to make it easier to work with an XML document. Le classi, i metodi e le proprietà aggiuntive, oltre a supportare completamente gli standard W3C, aggiungono ulteriori funzionalità rispetto a quelle presenti nel modello DOM XML di W3C.While fully supporting the W3C standards, the additional classes, methods, and properties add functionality beyond what can be done using the W3C XML DOM. Grazie alle nuove classi è possibile accedere ai dati relazionali e usufruire di metodi per la sincronizzazione con i dati ADO.NET, esponendo simultaneamente i dati come XML.New classes enable you to access relational data, giving you methods for synchronizing with ADO.NET data, simultaneously exposing data as XML. Per altre informazioni, vedere Sincronizzazione di un DataSet con un XmlDataDocument.For more information, see Synchronizing a DataSet with an XmlDataDocument.

Il DOM è particolarmente utile per la lettura dei dati XML in memoria per modificarne la struttura, per aggiungere o rimuovere nodi o per modificare i dati appartenenti a un nodo come nel testo contenuto da un elemento.The DOM is most useful for reading XML data into memory to change its structure, to add or remove nodes, or to modify the data held by a node as in the text contained by an element. Tuttavia, sono disponibili altre classi che sono più rapide del DOM in altri scenari.However, other classes are available that are faster than the DOM in other scenarios. Per ottenere accesso al flusso XML di tipo forward-only e non memorizzato nella cache, usare XmlReader e XmlWriter.For fast, non-cached, forward-only stream access to XML, use the XmlReader and XmlWriter. Se invece è necessario un accesso casuale con un modello a cursore e XPath, usare la classe XPathNavigator.If you need random access with a cursor model and XPath, use the XPathNavigator class.

Vedere ancheSee Also

Tipi di nodi XMLTypes of XML Nodes
Mapping della gerarchia di oggetti in dati XMLMapping the Object Hierarchy to XML Data