XML 元素文本
更新:2007 年 11 月
表示 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
必需。属性 (Attribute) 名。格式为以下格式之一:
文本。请参见已声明的 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 语句(.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 语句定义的命名空间。