XML 文本允许将 XML 直接合并到 Visual Basic 代码中。 XML 文本语法表示 LINQ to XML 对象,它类似于 XML 1.0 语法。 这样,可以更轻松地以编程方式创建 XML 元素和文档,因为代码的结构与最终 XML 相同。
Visual Basic 将 XML 文本编译为 LINQ to XML 对象。 LINQ to XML 提供用于创建和作 XML 的简单对象模型,此模型与 Language-Integrated 查询(LINQ)很好地集成。 有关详细信息,请参阅 XElement。
可以在 XML 文本中嵌入 Visual Basic 表达式。 在运行时,应用程序为每个文本创建 LINQ to XML 对象,并合并嵌入表达式的值。 这样就可以在 XML 文本中指定动态内容。 有关详细信息,请参阅 XML 中的嵌入式表达式。
有关 XML 文本语法与 XML 1.0 语法之间的差异的详细信息,请参阅 XML 文本和 XML 1.0 规范。
简单文本
可以通过在 Visual Basic 代码中键入或粘贴有效 XML 来创建 LINQ to XML 对象。 XML 元素文本返回 XElement 对象。 有关详细信息,请参阅 XML 元素文本 和 XML 文本以及 XML 1.0 规范。 以下示例创建一个包含多个子元素的 XML 元素。
Dim contact1 As XElement =
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
可以通过使用 <?xml version="1.0"?>
启动 XML 文本来创建 XML 文档,如以下示例所示。 XML 文档文本返回对象 XDocument 。 有关详细信息,请参阅 XML 文档文本。
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
注释
Visual Basic 中的 XML 文本语法与 XML 1.0 规范中的语法不同。 有关详细信息,请参阅 XML 文本和 XML 1.0 规范。
续行符
XML 文本可以跨越多行而无需使用行继续符(空格-下划线-Enter 序列)。 这样,可以更轻松地将代码中的 XML 文本与 XML 文档进行比较。
编译器将行延续字符视为 XML 文本的一部分。 因此,仅当它属于 LINQ to XML 对象时,才应使用空格下划线输入序列。
但是,如果在嵌入的表达式中具有多行表达式,则确实需要行继续符。 有关详细信息,请参阅 XML 中的嵌入式表达式。
在 XML 文本中嵌入查询
可以在嵌入的表达式中使用查询。 执行此作时,查询返回的元素将添加到 XML 元素。 这样,便可以将动态内容(如用户查询的结果)添加到 XML 文本。
例如,以下代码使用嵌入查询从数组成员 phoneNumbers2
创建 XML 元素,然后将这些元素添加为子元素 contact2
。
Public Class XmlSamples
Public Sub Main()
' Initialize the objects.
Dim phoneNumbers2 As Phone() = {
New Phone("home", "206-555-0144"),
New Phone("work", "425-555-0145")}
' Convert the data contained in phoneNumbers2 to XML.
Dim contact2 =
<contact>
<name>Patrick Hines</name>
<%= From p In phoneNumbers2
Select <phone type=<%= p.Type %>><%= p.Number %></phone>
%>
</contact>
Console.WriteLine(contact2)
End Sub
End Class
Class Phone
Public Type As String
Public Number As String
Public Sub New(ByVal t As String, ByVal n As String)
Type = t
Number = n
End Sub
End Class
编译器如何从 XML 文本创建对象
Visual Basic 编译器将 XML 文本转换为对等效 LINQ to XML 构造函数的调用,以构建 LINQ to XML 对象。 例如,Visual Basic 编译器会将以下代码示例转换为对 XML 版本指令的 XProcessingInstruction 构造函数的调用、对 XElement、<contact>
和 <name>
元素的 <phone>
构造函数的调用,以及对 XAttribute 属性的 type
构造函数的调用。 具体而言,鉴于以下示例中的属性,Visual Basic 编译器将调用 XAttribute(XName, Object) 构造函数两次。 第一个会将值type
传递给参数name
,并将值home
传递给参数value
。 第二次也将传递 type
参数的 name
值,但会传递 work
参数的 value
值。
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>