HOW TO:擷取屬性的值 (LINQ to XML)
這個主題顯示如何取得屬性的值。 有兩個主要方式:您可以將 XAttribute 轉型為所需的型別;然後,明確的轉換運算子會將項目或屬性的內容轉換為指定的型別。 或者,您可以使用 Value 屬性。 不過,轉型通常是較好的方法。 如果您要將屬性轉型為可為 Null 的型別 (Nullable Type),擷取可能存在或可能不存在之屬性的值時,程式碼比較容易撰寫。 如需此技術的範例,請參閱 HOW TO:擷取項目的值 (LINQ to XML)。
範例
若要擷取屬性的值,只要將 XAttribute 物件轉型為您所需的型別即可。
在 Visual Basic 中,您可以使用整合式屬性 (Attribute) 的屬性 (Property) 來擷取屬性 (Attribute) 的值。
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)
這個範例會產生下列輸出:
<Root Attr="abcde" />
abcde
在 Visual Basic 中,您可以使用整合式屬性 (Attribute) 的屬性 (Property) 來設定屬性 (Attribute) 的值。 此外,如果您使用整合式屬性 (Attribute) 的屬性 (Property) 來設定不存在之屬性 (Attribute) 的值,將會建立這個屬性 (Attribute)。
Dim root As XElement = <Root Att1="content"/>
root.@Att1 = "new content"
root.@Att2 = "new attribute"
Console.WriteLine(root)
這個範例會產生下列輸出:
<Root Att1="new content" Att2="new attribute" />
下列範例顯示如何擷取屬性位於命名空間之屬性的值。 如需詳細資訊,請參閱使用 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
這個範例會產生下列輸出:
abcde