Cenni preliminari sulla classe XAttribute
Gli attributi sono coppie nome/valore associate a un elemento. La classe XAttribute rappresenta gli attributi XML.
Panoramica
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 sembra molto simile a 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. |
Creazione di un elemento con un attributo
Nel codice 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);
Con Visual Basic è possibile usare valori letterali XML:
Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)
Questo esempio produce il seguente output:
<Phone Type="Home">555-555-5555</Phone>
Costruzione funzionale di attributi
È possibile costruire oggetti XAttribute in linea con la costruzione di oggetti XElement, come descritto di seguito:
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)
Questo esempio produce il seguente output:
<Customers>
<Customer>
<Name>John Doe</Name>
<PhoneNumbers>
<Phone type="home">555-555-5555</Phone>
<Phone type="work">666-666-6666</Phone>
</PhoneNumbers>
</Customer>
</Customers>
Attributi non 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 molto 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.