XML 文本概述 (Visual Basic)

使用 XML 文本可以直接将 XML 合并到您的 Visual Basic 代码中。XML 文本语法表示 LINQ to XML 对象,它类似于 XML 1.0 语法。可以通过它以编程方式轻松创建 XML 元素和文档,因为您的代码与最终的 XML 具有相同的结构。

Visual Basic 将 XML 文本编译为 LINQ to XML 对象。 LINQ to XML 提供了一个用于创建和操作 XML 的简单对象模型,此模型与语言集成查询 (LINQ) 良好集成。 有关更多信息,请参见 XElement

可以在 XML 文本中嵌入 Visual Basic 表达式。 在运行时,应用程序会为每个文本创建一个 LINQ to XML 对象,并且合并嵌入式表达式的值。 这使您可以在 XML 文本内指定动态内容。 有关更多信息,请参见 XML 中的嵌入式表达式 (Visual Basic)

有关 XML 文本语法和 XML 1.0 语法之间差异的更多信息,请参见 XML 文本和 XML 1.0 规范 (Visual Basic)

简单文本

通过键入或粘贴有效的 XML,可以在 Visual Basic 代码中创建 LINQ to XML 对象。 XML 元素文本返回一个 XElement 对象。 有关更多信息,请参见 XML 元素文本 (Visual Basic)XML 文本和 XML 1.0 规范 (Visual Basic)。 下面的示例创建了一个具有多个子元素的 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 文档文本 (Visual Basic)

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 规范 (Visual Basic)

行继续符

XML 文本可以跨多个行,而无需使用行继续符(空格-下划线-回车序列)。 这使得将代码中的 XML 文本与 XML 文档进行比较变得更加容易。

编译器将行继续符视为 XML 文本的一部分。 因此,仅应在空格-下划线-回车序列属于 LINQ to XML 对象时使用该序列。

但是,如果在嵌入式表达式中有一个多行表达式,则确实需要行继续符。 有关更多信息,请参见 XML 中的嵌入式表达式 (Visual Basic)

在 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 编译器将下面的代码示例转换为对 XProcessingInstruction 构造函数的调用以生成 XML 版本指令,转换为对 XElement 构造函数的调用以生成 <contact>、<name> 和 <phone> 元素,转换为对 XAttribute 构造函数的调用以生成 type 特性。 具体说来,给定以下示例中的特性,Visual Basic 编译器将调用 XAttribute(XName, Object) 构造函数两次。 第一次调用将为 name 参数传递值 type,并且为 value 参数传递值 home。 第二次调用也将为 name 参数传递值 type,但为 value 参数传递值 work。

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>

请参见

参考

XML 文档文本 (Visual Basic)

XML 元素文本 (Visual Basic)

XElement

概念

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

其他资源

在 Visual Basic 中创建 XML

XML 文本 (Visual Basic)