Accesso agli attributi nel DOMAccessing Attributes in the DOM

Gli attributi sono proprietà dell'elemento, non elementi figlio dell'elemento.Attributes are properties of the element, not children of the element. Questa distinzione è importante, a causa dei metodi usati per navigare all'interno dei nodi di pari livello, dei nodi padre e dei nodi figlio nel DOM (Document Object Model) XML.This distinction is important because of the methods used to navigate sibling, parent, and child nodes of the XML Document Object Model (DOM). Ad esempio, per navigare da un elemento a un attributo o tra più attributi non vengono usati i metodi PreviousSibling e NextSibling.For example, the PreviousSibling and NextSibling methods are not used to navigate from an element to an attribute or between attributes. Un attributo è una proprietà di un elemento e appartiene a tale elemento. Presenta infatti una proprietà OwnerElement e non una proprietà parentNode e dispone di metodi di navigazione diversi.Instead, an attribute is a property of an element and is owned by an element, has an OwnerElement property and not a parentNode property, and has distinct methods of navigation.

Quando il nodo corrente è un elemento, è necessario usare il metodo HasAttribute per verificare la presenza di eventuali attributi associati all'elemento.When the current node is an element, use the HasAttribute method to see if there are any attributes associated with the element. Una volta appurato che l'elemento dispone di attributi, sono disponibili diversi metodi per accedere agli attributi.Once it is known that an element has attributes, there are multiple methods for accessing attributes. Per recuperare un singolo attributo dall'elemento, è possibile usare i metodi GetAttribute e GetAttributeNode di XmlElement oppure recuperare tutti gli attributi in una raccolta.To retrieve a single attribute from the element, you can use the GetAttribute and GetAttributeNode methods of the XmlElement or you can obtain all the attributes into a collection. Quest'ultimo metodo può rivelarsi utile quando è necessario scorrere la raccolta.Obtaining the collection is useful if you need to iterate over the collection. Per recuperare tutti gli attributi dall'elemento, usare la proprietà Attributes dell'elemento per recuperare tutti gli attributi in una raccolta.If you want all attributes from the element, use the Attributes property of the element to retrieve all the attributes into a collection.

Recupero di tutti gli attributi in una raccoltaRetrieving All Attributes into a Collection

Se si desidera inserire in una raccolta tutti gli attributi di un nodo dell'elemento, chiamare la proprietà XmlElement.Attributes.If you want all the attributes of an element node put into a collection, call the XmlElement.Attributes property. In questo modo si ottiene XmlAttributeCollection in cui sono contenuti tutti gli attributi di un elemento.This gets the XmlAttributeCollection that contains all the attributes of an element. La classe XmlAttributeCollectioneredita dalla mappa XmlNamedNode.The XmlAttributeCollection class inherits from the XmlNamedNode map. Nei metodi e nelle proprietà disponibili nella raccolta sono inoltre inclusi quelli disponibili in una mappa di nodi denominata, oltre ai metodi e alle proprietà specifici della classe XmlAttributeCollection, quale la proprietà ItemOf o il metodo Append.Therefore, the methods and properties available on the collection include those available on a named node map in addition to methods and properties specific to the XmlAttributeCollection class, such as the ItemOf property or the Append method. Ogni elemento della raccolta di attributi rappresenta un nodo XmlAttribute.Each item in the attribute collection represents an XmlAttribute node. Per individuare il numero di attributi di un elemento, recuperare la classe XmlAttributeCollection e usare la proprietà Count per verificare il numero dei nodi XmlAttribute presenti nella raccolta.To find the number of attributes on an element, get the XmlAttributeCollection, and use the Count property to see how many XmlAttribute nodes are in the collection.

Nell'esempio di codice seguente viene illustrato come recuperare una raccolta di attributi e come scorrerla usando il metodo Count per l'indice del ciclo.The following code example shows how to retrieve an attribute collection and, using the Count method for the looping index, iterate over it. Inoltre, nel codice viene illustrato come recuperare un singolo attributo dalla raccolta e visualizzarne il valore.The code then shows how to retrieve a single attribute from the collection and display its value.

Imports System  
Imports System.IO  
Imports System.Xml  

Public Class Sample  

    Public Shared Sub Main()  

        Dim doc As XmlDocument = New XmlDocument()  
        doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" & _  
               "<title>The Handmaid's Tale</title>" & _  
               "<price>14.95</price>" & _  
               "</book>")  

        ' Move to an element.   
        Dim myElement As XmlElement = doc.DocumentElement  

        ' Create an attribute collection from the element.  
        Dim attrColl As XmlAttributeCollection = myElement.Attributes  

        ' Show the collection by iterating over it.  
        Console.WriteLine("Display all the attributes in the collection...")  
        Dim i As Integer  
        For i = 0 To attrColl.Count - 1  
            Console.Write("{0} = ", attrColl.ItemOf(i).Name)  
            Console.Write("{0}", attrColl.ItemOf(i).Value)  
            Console.WriteLine()  
        Next  

        ' Retrieve a single attribute from the collection; specifically, the  
        ' attribute with the name "misc".  
        Dim attr As XmlAttribute = attrColl("misc")  

        ' Retrieve the value from that attribute.  
        Dim miscValue As String = attr.InnerXml  

        Console.WriteLine("Display the attribute information.")  
        Console.WriteLine(miscValue)  

    End Sub  
End Class  
using System;  
using System.IO;  
using System.Xml;  

public class Sample  
{  

    public static void Main()  
    {  
        XmlDocument doc = new XmlDocument();  
        doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" +  
                      "<title>The Handmaid's Tale</title>" +  
                      "<price>14.95</price>" +  
                      "</book>");  

        // Move to an element.  
        XmlElement myElement = doc.DocumentElement;  

        // Create an attribute collection from the element.  
        XmlAttributeCollection attrColl = myElement.Attributes;  

        // Show the collection by iterating over it.  
        Console.WriteLine("Display all the attributes in the collection...");  
        for (int i = 0; i < attrColl.Count; i++)  
        {  
            Console.Write("{0} = ", attrColl[i].Name);  
            Console.Write("{0}", attrColl[i].Value);  
            Console.WriteLine();  
        }  

        // Retrieve a single attribute from the collection; specifically, the  
        // attribute with the name "misc".  
        XmlAttribute attr = attrColl["misc"];  

        // Retrieve the value from that attribute.  
        String miscValue = attr.InnerXml;  

        Console.WriteLine("Display the attribute information.");  
        Console.WriteLine(miscValue);  

    }  
}  

In questo esempio viene visualizzato il seguente l'output:This example displays the following output:

OutputOutput

Vengono visualizzati tutti gli attributi nella raccolta.Display all the attributes in the collection.

genre = novel  
ISBN = 1-861001-57-5  
misc = sale item  
Display the attribute information.  
sale item  

È possibile recuperare le informazioni contenute in una raccolta di attributi in base al nome o al numero di indice.The information in an attribute collection can be retrieved by name or index number. Nell'esempio precedente è stato illustrato come recuperare i dati in base al nome.The example above shows how to retrieve data by name. Nell'esempio successivo viene illustrato come recuperare i dati in base al numero di indice.The next example shows how to retrieve data by index number.

Dal momento che XmlAttributeCollection è una raccolta che è possibile scorrere in base al nome o all'indice, nell'esempio viene illustrato come selezionare il primo attributo della raccolta usando un indice in base zero e il seguente file, baseuri.xml, come input.Because the XmlAttributeCollection is a collection and can be iterated over by name or index, this example shows selecting the first attribute out of the collection using a zero-based index and using the following file, baseuri.xml, as input.

InputInput

<!-- XML fragment -->  
<book genre="novel">  
  <title>Pride And Prejudice</title>  
</book>  
Option Explicit On  
Option Strict On  

Imports System  
Imports System.IO  
Imports System.Xml  

Public Class Sample  

    Public Shared Sub Main()  
        ' Create the XmlDocument.  
        Dim doc As New XmlDocument()  
        doc.Load("http://localhost/baseuri.xml")  

        ' Display information on the attribute node. The value  
        ' returned for BaseURI is 'http://localhost/baseuri.xml'.  
        Dim attr As XmlAttribute = doc.DocumentElement.Attributes(0)  
        Console.WriteLine("Name of the attribute:  {0}", attr.Name)  
        Console.WriteLine("Base URI of the attribute:  {0}", attr.BaseURI)  
        Console.WriteLine("The value of the attribtue:  {0}", attr.InnerText)  
    End Sub 'Main   
End Class 'Sample  
using System;  
using System.IO;  
using System.Xml;  

public class Sample  
{  
  public static void Main()  
  {  
    // Create the XmlDocument.  
    XmlDocument doc = new XmlDocument();  

    doc.Load("http://localhost/baseuri.xml");  

    // Display information on the attribute node. The value  
    // returned for BaseURI is 'http://localhost/baseuri.xml'.  
    XmlAttribute attr = doc.DocumentElement.Attributes[0];  
    Console.WriteLine("Name of the attribute:  {0}", attr.Name);  
    Console.WriteLine("Base URI of the attribute:  {0}", attr.BaseURI);  
    Console.WriteLine("The value of the attribtue:  {0}", attr.InnerText);  
  }  
}  

Recupero di un singolo nodo AttributeRetrieving an Individual Attribute Node

Per rimuovere un singolo nodo di attributo da un elemento, viene usato il metodo XmlElement.GetAttributeNodeTo retrieve a single attribute node from an element, the XmlElement.GetAttributeNode method is used. che restituisce un oggetto di tipo XmlAttribute.It returns an object of type XmlAttribute. Se si dispone di XmlAttribute, tutti i metodi e le proprietà disponibili nella classe System.Xml.XmlAttribute, ad esempio la ricerca di OwnerElement, sono disponibili in tale oggetto.Once you have an XmlAttribute, all the methods and properties available in the System.Xml.XmlAttribute class are available on that object, such as finding the OwnerElement.

Imports System  
Imports System.IO  
Imports System.Xml  

Public Class Sample  

    Public Shared Sub Main()  

        Dim doc As XmlDocument = New XmlDocument()  
        doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5' misc='sale item'>" & _  
               "<title>The Handmaid's Tale</title>" & _  
               "<price>14.95</price>" & _  
               "</book>")  

        ' Move to an element.  
        Dim root As XmlElement  
        root = doc.DocumentElement  

        ' Get an attribute.  
        Dim attr As XmlAttribute  
        attr = root.GetAttributeNode("ISBN")  

        ' Display the value of the attribute.  
        Dim attrValue As String  
        attrValue = attr.InnerXml  
        Console.WriteLine(attrValue)  

    End Sub  
End Class  
using System;  
using System.IO;  
using System.Xml;  

 public class Sample  
 {  
      public static void Main()  
      {  
    XmlDocument doc = new XmlDocument();  
     doc.LoadXml("<book genre='novel' ISBN='1-861003-78' misc='sale item'>" +  
                   "<title>The Handmaid's Tale</title>" +  
                   "<price>14.95</price>" +  
                   "</book>");   

    // Move to an element.  
     XmlElement root = doc.DocumentElement;  

    // Get an attribute.  
     XmlAttribute attr = root.GetAttributeNode("ISBN");  

    // Display the value of the attribute.  
     String attrValue = attr.InnerXml;  
     Console.WriteLine(attrValue);  

    }  
}  

È anche possibile riprodurre l'esempio precedente, in cui dalla raccolta di attributi viene recuperato un singolo nodo Attribute.You can also do as shown in the previous example, where a single attribute node is retrieved from the attribute collection. Nell'esempio di codice seguente viene illustrato come scrivere una sola riga di codice per recuperare un singolo attributo in base al numero di indice dal livello radice dell'albero del documento XML, nota anche come proprietà DocumentElement.The following code example shows how one line of code can be written to retrieve a single attribute by index number from the root of the XML document tree, also known as the DocumentElement property.

XmlAttribute attr = doc.DocumentElement.Attributes[0];  

Vedere ancheSee Also

Modello DOM (Document Object Mode) XMLXML Document Object Model (DOM)