XML 特性轴属性 (Visual Basic)

提供对 XElement 对象或 XElement 对象集合中第一个元素的属性值的访问。

语法

object.@attribute
' -or-
object.@<attribute>

组成部分

object(必需)。 XElement 对象或 XElement 对象的集合。

.@ 必需。 表示属性轴特性的开头。

<(可选)。 表示属性名称的开头,如果 attribute 不是 Visual Basic 中的有效标识。

attribute(必需)。 要访问的属性的名称,格式为 [prefix:]name

组成部分 说明
prefix 可选。 属性的命名空间前缀。 必须是使用 Imports 语句定义的全局 XML 命名空间。
name 必需。 本地属性名称。 请参阅已声明的 XML 元素和属性的名称

>(可选)。 表示属性名称的开头,如果 attribute 不是 Visual Basic 中的有效标识。

返回值

一个包含 attribute 值的字符串。 如果属性名称不存在,则 Nothing 返回。

注解

可以使用 XML 属性轴属性从 XElement 对象或 XElement 对象集合的第一个元素中按名称访问属性的值。 可以按名称检索属性值,或者通过指定以 @ 标识符开头的新名称向元素添加新属性。

使用 @ 标识符引用 XML 属性时,属性值作为字符串返回,无需显式指定 Value 特性。

XML 属性的命名规则不同于指定 Visual Basic 标识符的命名规则。 若要访问名称不是有效 Visual Basic 标识符的 XML 属性,请用尖括号将名称括在括号(< 和 >)中。

XML 命名空间

属性轴属性中的名称仅可使用通过 Imports 语句全局声明的 XML 命名空间前缀。 它不能使用在 XML 元素文本中局部声明的 XML 命名空间前缀。 有关详细信息,请参阅 Imports 语句(XML 命名空间)

示例 1

下面的示例演示如何从名为 phone 的 XML 元素集合获取名为 type 的 XML 属性的值。

' Topic: XML Attribute Axis Property
Dim phones As XElement = 
    <phones>
        <phone type="home">206-555-0144</phone>
        <phone type="work">425-555-0145</phone>
    </phones>

Dim phoneTypes As XElement = 
  <phoneTypes>
      <%= From phone In phones.<phone> 
          Select <type><%= phone.@type %></type> 
      %>
  </phoneTypes>

Console.WriteLine(phoneTypes)

此代码显示以下文本:

<phoneTypes>

<type>home</type>

<type>work</type>

</phoneTypes>

示例 2

下面的示例演示如何通过声明方式、作为 XML 的一部分以及通过将属性添加到 XElement 对象的实例来动态地为 XML 元素创建属性。 以声明方式创建属性 type,并动态创建属性 owner

Dim phone2 As XElement = <phone type="home">206-555-0144</phone>
phone2.@owner = "Harris, Phyllis"

Console.WriteLine(phone2)

此代码显示以下文本:

<phone type="home" owner="Harris, Phyllis">206-555-0144</phone>

示例 3

下面的示例使用尖括号语法获取名为 number-type 的 XML 属性的值,该属性不是 Visual Basic 的有效标识符。

Dim phone As XElement = 
     <phone number-type=" work">425-555-0145</phone>

 Console.WriteLine("Phone type: " & phone.@<number-type>)

此代码显示以下文本:

Phone type: work

示例 4

下面的示例声明 ns 作为 XML 命名空间前缀。 然后它使用该命名空间前缀来创建 XML 文本并访问具有限定名称 ns:name 的第一个子节点。

Imports <xmlns:ns = "http://SomeNamespace"> 
 
Class TestClass3

    Shared Sub TestPrefix()
        Dim phone = 
            <ns:phone ns:type="home">206-555-0144</ns:phone>

        Console.WriteLine("Phone type: " & phone.@ns:type)
    End Sub

End Class

此代码显示以下文本:

Phone type: home

另请参阅