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
语句定义的命名空间。