XML 元素文本 (Visual Basic)

一个表示对象的 XElement 文字。

语法

<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>

部件

  • <

    必填。 打开起始元素标记。

  • name

    必填。 元素的名称。 格式为以下格式之一:

    • 窗体 [ePrefix:]eName的元素名称的文本文本,其中:

      部件 DESCRIPTION
      ePrefix 可选。 元素的 XML 命名空间前缀。 必须是使用文件中或项目级别的语句定义的 Imports 全局 XML 命名空间,或者是在此元素或父元素中定义的本地 XML 命名空间。
      eName 必填。 元素的名称。 格式为以下格式之一:

      - 文本文本。 请参阅 声明的 XML 元素和属性的名称
      - 窗体 <%= eNameExp %>的嵌入表达式。 eNameExp类型必须是String或隐式转换为XName的类型。
    • 窗体 <%= nameExp %>的嵌入表达式。 nameExp类型必须是String或隐式转换为XName的类型。 不允许在元素的结束标记中使用嵌入表达式。

  • attributeList

    可选。 文本中声明的属性列表。

    attribute [ attribute ... ]

    每个 attribute 语法具有以下语法之一:

    • 窗体 [aPrefix:]aName=aValue的属性赋值,其中:

      部件 DESCRIPTION
      aPrefix 可选。 属性的 XML 命名空间前缀。 必须是使用 Imports 语句定义的全局 XML 命名空间,或者是在此元素或父元素中定义的本地 XML 命名空间。
      aName 必填。 属性的名称。 格式为以下格式之一:

      - 文本文本。 请参阅 声明的 XML 元素和属性的名称
      - 窗体 <%= aNameExp %>的嵌入表达式。 aNameExp类型必须是String或隐式转换为XName的类型。
      aValue 可选。 属性的值。 格式为以下格式之一:

      - 文本文本,用引号括起来。
      - 窗体 <%= aValueExp %>的嵌入表达式。 允许任何类型。
    • 窗体 <%= aExp %>的嵌入表达式。

  • />

    可选。 指示该元素是一个空元素,不包含内容。

  • >

    必填。 结束开始或空元素标记。

  • elementContents

    可选。 元素的内容。

    content [ content ... ]

    每个 content 都可以是下列项之一:

    • 文本文本。 如果有任何文本文本,则所有 elementContents 空白都变得重要。

    • 窗体 <%= contentExp %>的嵌入表达式。

    • XML 元素文本。

    • XML 注释文本。 请参阅 XML 注释文本

    • XML 处理指令文本。 请参阅 XML 处理指令文本

    • XML CDATA 文本。 请参阅 XML CDATA 文本

  • </[name]>

    可选。 表示元素的结束标记。 当可选 name 参数是嵌入表达式的结果时,不允许该参数。

返回值

对象 XElement

注解

可以使用 XML 元素文本语法在代码中创建 XElement 对象。

注释

XML 文本可以跨越多行,而无需使用行延续字符。 此功能使你可以从 XML 文档复制内容,并将其直接粘贴到 Visual Basic 程序中。

通过表单 <%= exp %> 的嵌入表达式,可以将动态信息添加到 XML 元素文本。 有关详细信息,请参阅 XML 中的嵌入表达式

Visual Basic 编译器将 XML 元素文本转换为对构造函数的 XElement 调用,如果需要,则 XAttribute 为构造函数。

XML 命名空间

当必须在代码中多次使用同一命名空间中的元素创建 XML 文本时,XML 命名空间前缀非常有用。 可以使用全局 XML 命名空间前缀(通过使用 Imports 语句定义)或使用属性语法定义的 xmlns:xmlPrefix="xmlNamespace" 本地前缀。 有关详细信息,请参阅 Imports 语句(XML 命名空间)

根据 XML 命名空间的范围规则,本地前缀优先于全局前缀。 但是,如果 XML 文本定义 XML 命名空间,该命名空间不适用于嵌入表达式中显示的表达式。 嵌入表达式只能访问全局 XML 命名空间。

Visual Basic 编译器将 XML 文本使用的每个全局 XML 命名空间转换为生成的代码中的一个本地命名空间定义。 未使用的全局 XML 命名空间不会显示在生成的代码中。

示例 1

以下示例演示如何创建包含两个嵌套空元素的简单 XML 元素。

Dim test1 As XElement = 
<outer>
    <inner1></inner1>
    <inner2/>
</outer>

Console.WriteLine(test1)

该示例显示以下文本。 请注意,文本保留空元素的结构。

<outer>
  <inner1></inner1>
  <inner2 />
</outer>

示例 2

以下示例演示如何使用嵌入表达式命名元素和创建属性。

Dim elementType = "book"
Dim authorName = "My Author"
Dim attributeName1 = "year"
Dim attributeValue1 = 1999
Dim attributeName2 = "title"
Dim attributeValue2 = "My Book"

Dim book As XElement = 
<<%= elementType %>
    isbn="1234"
    author=<%= authorName %>
    <%= attributeName1 %>=<%= attributeValue1 %>
    <%= New XAttribute(attributeName2, attributeValue2) %>
/>

Console.WriteLine(book)

此代码显示以下文本:

<book isbn="1234" author="My Author" year="1999" title="My Book" />

示例 3

以下示例声明 ns 为 XML 命名空间前缀。 然后,它使用命名空间的前缀创建 XML 文本并显示元素的最终形式。

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Class TestClass1

    Shared Sub TestPrefix()
        ' Create test using a global XML namespace prefix. 
        Dim inner2 = <ns:inner2/>

        Dim test = 
        <ns:outer>
            <ns:middle xmlns:ns="http://NewNamespace">
                <ns:inner1/>
                <%= inner2 %>
            </ns:middle>
        </ns:outer>

        ' Display test to see its final form. 
        Console.WriteLine(test)
    End Sub

End Class

此代码显示以下文本:

<ns:outer xmlns:ns="http://SomeNamespace">
  <ns:middle xmlns:ns="http://NewNamespace">
    <ns:inner1 />
    <inner2 xmlns="http://SomeNamespace" />
  </ns:middle>
</ns:outer>

请注意,编译器将全局 XML 命名空间的前缀转换为 XML 命名空间的前缀定义。 <ns:middle> 元素重新定义 ns:inner1> 元素的 <XML 命名空间前缀。 但是, <ns:inner2> 元素使用语句定义的 Imports 命名空间。

另请参阅