XML 元素文本 (Visual Basic)

表示 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 必选。特性名。格式为以下格式之一:
aValue 可选。特性的值。格式为以下格式之一:
  • 文本(在引号内)。

  • 形式为 <%= aValueExp %> 的嵌入式表达式。可以是任何类型。

  • 形式为 <%= aExp %> 的嵌入式表达式。

/>

可选。指示元素为空元素,不包含任何内容。

>

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

elementContents

可选。元素的内容。

content [ content ... ]

每个 content 都可以为下列内容之一:

</[name]>

可选。表示元素的结束标记。嵌入式表达式的结果不能作为可选的 name 参数。

返回值

XElement 对象。

备注

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

说明说明

XML 文本可以跨多个行,而无需使用行继续符。由于具有这一特点,因此可以复制 XML 文档中的内容,将该内容直接粘贴到 Visual Basic 程序中。

使用形式为 <%= exp %> 的嵌入式表达式可以将动态信息添加到 XML 元素文本中。有关更多信息,请参见 XML 中的嵌入式表达式 (Visual Basic)

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

XML 命名空间

如果必须在代码中通过同一命名空间的元素多次创建 XML 文本,XML 命名空间前缀会十分有用。可以使用全局 XML 命名空间前缀(使用 Imports 语句定义),也可以使用局部前缀(使用 xmlns:xmlPrefix="xmlNamespace" 特性语法定义)。有关更多信息,请参见 Imports 语句(XML 命名空间)

与 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 = "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" />

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

请参见

参考

XElement

XML 注释文本 (Visual Basic)

XML CDATA 文本 (Visual Basic)

Imports 语句(XML 命名空间)

概念

已声明的 XML 元素和特性的名称 (Visual Basic)

XML 中的嵌入式表达式 (Visual Basic)

其他资源

XML 文本 (Visual Basic)

在 Visual Basic 中创建 XML