XML 元素文本 (Visual Basic)

表示 XElement 对象的文本。

语法

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

组成部分

  • <

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

  • name

    必需。 元素名称。 格式为以下其中一项:

    • 元素名称的文字文本,形式为 [ePrefix:]eName,其中:

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

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

  • attributeList

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

    attribute [ attribute ... ]

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

    • 属性分配,形式为 [aPrefix:]aName=aValue,其中:

      组成部分 说明
      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 语句定义的命名空间。

另请参阅