Procedura: recuperare il valore di un attributo (LINQ to XML)

In questo argomento viene illustrato come ottenere il valore di attributi. Per eseguire questa operazione, è possibile scegliere tra due alternative. È possibile eseguire il cast di un XAttribute al tipo desiderato; l'operatore di conversione esplicito converte quindi il contenuto dell'elemento o dell'attributo al tipo specificato. In alternativa, è possibile utilizzare la proprietà Value. L'esecuzione del cast costituisce in genere l'approccio migliore. Se si esegue il cast dell'attributo a un tipo nullable, sarà più semplice scrivere il codice quando si recupera il valore di un attributo che potrebbe o meno esistere. Per esempi di questa tecnica, vedere Procedura: recuperare il valore di un elemento (LINQ to XML).

Esempio

Per recuperare il valore di un attributo, è sufficiente eseguire il cast dell'oggetto XAttribute al tipo desiderato.

In Visual Basic è possibile utilizzare la proprietà integrata dell'attributo per recuperare il valore di un attributo.

XElement root = new XElement("Root",
                    new XAttribute("Attr", "abcde")
                );
Console.WriteLine(root);
string str = (string)root.Attribute("Attr");
Console.WriteLine(str);
Dim root As XElement = <Root Attr="abcde"/>
Console.WriteLine(root)
Dim str As String = root.@Attr
Console.WriteLine(str)

L'output ottenuto eseguendo l'esempio è il seguente:

<Root Attr="abcde" />
abcde

In Visual Basic è possibile utilizzare la proprietà integrata dell'attributo per impostare il valore di un attributo. Se inoltre si utilizza la proprietà integrata dell'attributo per impostare il valore di un attributo non esistente, l'attributo verrà creato.

Dim root As XElement = <Root Att1="content"/>
root.@Att1 = "new content"
root.@Att2 = "new attribute"
Console.WriteLine(root)

L'output ottenuto eseguendo l'esempio è il seguente:

<Root Att1="new content" Att2="new attribute" />

Nell'esempio seguente viene illustrato come recuperare il valore di un attributo quando l'attributo è in uno spazio dei nomi. Per ulteriori informazioni, vedere Utilizzo degli spazi dei nomi XML.

XNamespace aw = "https://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
                    new XAttribute(aw + "Attr", "abcde")
                );
string str = (string)root.Attribute(aw + "Attr");
Console.WriteLine(str);
Imports <xmlns:aw="https://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim root As XElement = <aw:Root aw:Attr="abcde"/>
        Dim str As String = root.@aw:Attr
        Console.WriteLine(str)
    End Sub
End Module

L'output ottenuto eseguendo l'esempio è il seguente:

abcde

Vedere anche

Concetti

Assi LINQ to XML