Свойство оси атрибута XML (Visual Basic)

Предоставляет доступ к значению атрибута для XElement объекта или к первому элементу в коллекции XElement объектов.

Синтаксис

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

Детали

object Обязательный. XElement Объект или коллекция XElement объектов.

.@ Обязательный. Обозначает начало свойства оси атрибута.

< Необязательный. Обозначает начало имени атрибута, если attribute не является допустимым идентификатором в Visual Basic.

attribute Обязательный. Имя атрибута для доступа к форме [prefix:]name.

Часть Description
prefix Необязательно. Префикс пространства имен XML для атрибута. Должно быть глобальным пространством имен XML, определенным с помощью оператора Imports.
name Обязательный. Имя локального атрибута. См . имена объявленных XML-элементов и атрибутов.

> Необязательный. Обозначает конец имени атрибута, если attribute не является допустимым идентификатором в Visual Basic.

Возвращаемое значение

Строка, содержащая значение attribute. Если имя атрибута не существует, Nothing возвращается.

Замечания

Свойство оси атрибута XML можно использовать для доступа к значению атрибута по имени объекта или из XElement первого элемента в коллекции XElement объектов. Можно получить значение атрибута по имени или добавить новый атрибут в элемент, указав новое имя перед идентификатором @.

При обращении к XML-атрибуту с помощью идентификатора @значение атрибута возвращается в виде строки, и не нужно явно указывать Value это свойство.

Правила именования атрибутов XML отличаются от правил именования для идентификаторов Visual Basic. Чтобы получить доступ к XML-атрибуту с именем, который не является допустимым идентификатором Visual Basic, заключите имя в угловые скобки (< и >).

Пространства имен XML

Имя в свойстве оси атрибута может использовать только префиксы пространства имен XML, объявленные глобально с помощью инструкции Imports . В нем нельзя использовать префиксы пространства имен XML, объявленные локально с помощью литералов XML-элемента. Дополнительные сведения см. в разделе "Импорт" (пространство имен XML).

Пример 1

В следующем примере показано, как получить значения XML-атрибутов, именованных type из коллекции XML-элементов, именованных phone.

' 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-элемента как декларативно, так и в составе XML, а также динамически путем добавления атрибута XElement в экземпляр объекта. Атрибут 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

См. также