Visual Basic 中的 LINQ to XML 概述

Visual Basic 通过 XML 文本和 XML 轴属性为 LINQ to XML 提供支持。 这样,便可以使用熟悉的便捷语法在 Visual Basic 代码中使用 XML。 XML 文本 使你能够直接在代码中包含 XML。 XML 轴属性 使你能够访问 XML 文本的子节点、子代节点和属性。 有关详细信息,请参阅 XML 文字概述在 Visual Basic 中访问 XML

LINQ to XML 是一种内存中 XML 编程 API,专用于利用 Language-Integrated 查询(LINQ)。 虽然可以直接调用 LINQ API,但只有 Visual Basic 才能声明 XML 文本并直接访问 XML 轴属性。

注释

ASP.NET 页面中的声明性代码不支持 XML 文本和 XML 轴属性。 若要使用 Visual Basic XML 功能,请将代码放在 ASP.NET 应用程序中的代码隐藏页中。

“播放”按钮 有关相关视频演示,请参阅如何开始使用 LINQ to XML?以及如何使用 LINQ to XML 创建 Excel 电子表格?

创建 XML

可通过两种方法在 Visual Basic 中创建 XML 树。 可以直接在代码中声明 XML 文本,也可以使用 LINQ API 创建树。 这两个进程都使代码能够反映 XML 树的最终结构。 例如,下面的代码示例创建 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>

有关详细信息,请参阅 在 Visual Basic 中创建 XML

访问和导航 XML

Visual Basic 提供用于访问和导航 XML 结构的 XML 轴属性。 通过这些属性,可以通过指定 XML 子元素名称来访问 XML 元素和属性。 或者,可以显式调用 LINQ 方法来导航和定位元素和属性。 例如,下面的代码示例使用 XML 轴属性来引用 XML 元素的属性和子元素。 该代码示例使用 LINQ 查询检索子元素并将其输出为 XML 元素,从而有效地执行转换。

' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

        Dim contact =
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

有关详细信息,请参阅 Visual Basic 中的访问 XML

XML 命名空间

使用 Visual Basic,您可以通过Imports语句为全局 XML 命名空间指定一个别名。 以下示例演示如何使用 Imports 语句导入 XML 命名空间:

Imports <xmlns:ns="http://someNamespace">

访问 XML 轴属性并为 XML 文档和元素声明 XML 文本时,可以使用 XML 命名空间别名。

可以使用 XNamespace检索特定命名空间前缀的对象。

有关详细信息,请参阅 Imports 语句(XML 命名空间)

在 XML 文本中使用 XML 命名空间

以下示例演示如何创建 XElement 使用全局命名空间 ns的对象:

Dim contact1 As XElement = 
    <ns:contact>
        <ns:name>Patrick Hines</ns:name>
        <ns:phone type="home">206-555-0144</ns:phone>
        <ns:phone type="work">425-555-0145</ns:phone>
    </ns:contact>

Console.WriteLine(contact1)

Visual Basic 编译器可将包含 XML 命名空间别名的 XML 文本转换为等效代码,该代码使用 XML 表示法以使用具有 xmlns 属性的 XML 命名空间。 编译后,上一部分示例中的代码基本上生成与以下示例相同的可执行代码:

Dim contact2 As XElement = 
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>
    </ns1:contact>

Console.WriteLine(contact2)

在 XML 轴属性中使用 XML 命名空间

XML 文本中声明的 XML 命名空间不能用于 XML 轴属性。 但是,全局命名空间可以与 XML 轴属性一起使用。 使用冒号将 XML 命名空间前缀与本地元素名称分开。 下面是一个示例:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

另请参阅