Panoramica della classe XAttribute

Gli attributi sono coppie nome-valore associate a un elemento. La classe XAttribute rappresenta gli attributi XML.

Le modalità di utilizzo degli attributi in LINQ to XML sono simili a quelle degli elementi. I relativi costruttori sono simili. I metodi usati per recuperare le relative raccolte sono simili. Un'espressione di query LINQ relativa a una raccolta di attributi ha un aspetto molto simile a quello di un'espressione di query LINQ relativa a una raccolta di elementi.

L'ordine con cui gli attributi vengono aggiunti a un elemento viene mantenuto. Quando si scorrono gli attributi, questi vengono visualizzati nell'ordine in cui sono stati aggiunti.

Costruttore XAttribute

Il seguente costruttore della classe XAttribute è quello usato più comunemente:

Costruttore Descrizione
XAttribute(XName name, object content) Crea un oggetto XAttribute. L'argomento name specifica il nome dell'attributo, mentre content ne specifica il contenuto.

Esempio: Creare un elemento con un attributo

Nell'esempio seguente è illustrata l'attività comune di creazione di un elemento che contiene un attributo.

XElement phone = new XElement("Phone",
    new XAttribute("Type", "Home"),
    "555-555-5555");
Console.WriteLine(phone);
Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)

Nell'esempio viene prodotto l'output seguente:

<Phone Type="Home">555-555-5555</Phone>

Esempio: Costruzione funzionale di attributi

È possibile costruire oggetti XAttribute in linea con la costruzione di oggetti XElement, come illustrato nell'esempio seguente:

XElement c = new XElement("Customers",
    new XElement("Customer",
        new XElement("Name", "John Doe"),
        new XElement("PhoneNumbers",
            new XElement("Phone",
                new XAttribute("type", "home"),
                "555-555-5555"),
            new XElement("Phone",
                new XAttribute("type", "work"),
                "666-666-6666")
        )
    )
);
Console.WriteLine(c);
Dim c As XElement = _
    <Customers>
        <Customer>
            <Name>John Doe</Name>
            <PhoneNumbers>
                <Phone type="home">555-555-5555</Phone>
                <Phone type="work">666-666-6666</Phone>
            </PhoneNumbers>
        </Customer>
    </Customers>
Console.WriteLine(c)

Nell'esempio viene prodotto l'output seguente:

<Customers>
  <Customer>
    <Name>John Doe</Name>
    <PhoneNumbers>
      <Phone type="home">555-555-5555</Phone>
      <Phone type="work">666-666-6666</Phone>
    </PhoneNumbers>
  </Customer>
</Customers>

Gli attributi non sono nodi

Esistono alcune differenze tra attributi ed elementi. Gli oggetti XAttribute non rappresentano nodi nell'albero XML, ma sono coppie nome-valore associate a un elemento XML. A differenza del modello DOM (Document Object Model), questa definizione rispecchia maggiormente la struttura del codice XML. Sebbene gli oggetti XAttribute non siano effettivamente nodi dell'albero XML, le modalità di utilizzo degli oggetti XAttribute sono simili a quelle degli oggetti XElement.

Questa distinzione è di fondamentale importanza solo per gli sviluppatori che scrivono codice che riguarda gli alberi XML a livello di nodo. Non interessa quindi la maggior parte degli sviluppatori.

Vedi anche