XML 元素文本

更新:2007 年 11 月

表示 XElement 对象的文本。

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

组成部分

  • <
    必需。打开元素开始标记。

  • name
    必需。元素的名称。格式为以下格式之一:

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

      组成部分

      说明

      ePrefix

      可选。元素的 XML 命名空间前缀。必须是在文件中或项目级别上通过 Imports 语句定义的全局 XML 命名空间,或者是在此元素或父元素中定义的局部 XML 命名空间。

      eName

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

    • 形式为 <%= nameExp %> 的嵌入式表达式。nameExp 的类型必须为 String 或可隐式转换为 XName 的类型。在元素的结束标记中不允许使用嵌入式表达式。

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

    attribute [ attribute ... ]

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

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

      组成部分

      说明

      aPrefix

      可选。属性的 XML 命名空间前缀。必须是通过 Imports 语句定义的全局 XML 命名空间,或者是在此元素或父元素中定义的局部 XML 命名空间。

      aName

      必需。属性 (Attribute) 名。格式为以下格式之一:

      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 语句(.NET 命名空间和类型)

与 XML 命名空间的范围规则一样,局部前缀优先于全局前缀。但是,如果 XML 文本定义了 XML 命名空间,则该命名空间不能用于嵌入式表达式中的表达式。嵌入式表达式只能访问全局 XML 命名空间。

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

示例

下面的示例演示如何创建一个简单的 XML 元素,该元素具有两个嵌套的空元素。

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

Console.WriteLine(test1)

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

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

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

Dim elementType As String = "book"
Dim attributeName1 As String = "year"
Dim attributeValue1 As Integer = 1999
Dim attributeName2 As String = "title"
Dim attributeValue2 As String = "My Book"

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

Console.WriteLine(book)

这段代码将显示以下文本:

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

下面的示例将 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 语句定义的命名空间。

请参见

概念

已声明的 XML 元素和属性的名称

XML 中的嵌入式表达式

参考

XElement

XML 注释文本

XML CDATA 文本

Imports 语句(.NET 命名空间和类型)

其他资源

XML 文本

在 Visual Basic 中创建 XML