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 中的嵌入式表达式

有关 XML 文本语法与 XML 1.0 语法之间的差异的详细信息,请参阅 XML 文本和 XML 1.0 规范

简单文本

可以通过键入或粘贴有效的 XML,在 Visual Basic 代码中创建 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 文本的一部分。 因此,仅应在空格-下划线-Enter 序列属于 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 构造函数的调用、对 <contact><name><phone> 元素的 XElement 构造函数的调用,以及对 type 属性的 XAttribute 构造函数的调用。 具体而言,给定以下示例中的属性,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>

另请参阅