你目前正处于脱机状态,正在等待 Internet 重新连接

如何: 测试: 使用 System.Xml Visual basic.net 中合并两个 XML 文档中的数据

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 308066
本文已归档。它按“原样”提供,并且不再更新。
本文讨论了 Microsoft 产品的试用版本。在本文中提供信息,作为-是,可能会有所更改,恕不另行通知。

可从 Microsoft 为此测试版产品的正式的产品支持。有关如何获取对 Beta 版本的支持,请参见测试版的产品文件附带的文档,或到从中您下载此版本的 Web 位置查看。

为这篇文章的一个 Microsoft Visual C#.net 版本,请参阅 311530

本任务中

概要
本文演示如何使用 DataSet 对象合并两个 XML 文档。DataSet 对象都集中到支持已断开连接,分发与 ADO.NET 数据方案。数据集 是驻留在内存中的表示形式提供一致的、 关系的编程模型,无论数据源的数据。数据集 表示一组完整的包括相关的表、 约束,和表之间关系的数据。

back to the top

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
  • Windows XP、 Windows 2000 或 Windows NT 4.0 Service Pack 6a (SP6a)
  • Microsoft Visual Studio.net
本文假定您熟悉下列主题:
  • Visual Basic.net 语法
  • 可扩展标记语言 (XML)
back to the top

创建 Books1.xml 文件

  1. 从 Windows 开始 菜单中单击 运行,键入 Notepad.exe,然后单击 确定
  2. 突出显示下面的代码,用鼠标右键单击该的代码,然后单击 复制。在记事本,中的 编辑 菜单上单击 粘贴
    <?xml version="1.0"?><catalog>   <book id="bk101">      <author>Gambardella, Matthew</author>      <title>XML Developer's Guide</title>      <genre>Computer</genre>      <price>44.95</price>   </book>   <book id="bk102">      <author>Ralls, Kim</author>      <title>Midnight Rain</title>      <genre>Fantasy</genre>      <price>5.95</price>   </book></catalog>					
  3. 文件 菜单上单击 保存
  4. 另存为 对话框在 保存类型 下拉列表中单击 所有文件。在 文件名 文本框中键入 Books1.xml,然后单击 保存
back to the top

创建 Books2.xml 文件

  1. 在记事本,中创建名为 Books2.xml 一个新的文本文件。
  2. 复制并粘贴到 Books2.xml 的下面的 XML:
    <?xml version="1.0"?><catalog><book id="bk106">      <author>Randall, Cynthia</author>      <title>Lover Birds</title>      <genre>Romance</genre>      <price>4.95</price>   </book>   <book id="bk107">      <author>Thurman, Paula</author>      <title>Splish Splash</title>      <genre>Romance</genre>      <price>4.95</price>   </book></catalog>					
  3. 文件 菜单上单击 保存
  4. 另存为 对话框在 保存类型 下拉列表中单击 所有文件。在 文件名 文本框中键入 Books2.xml,然后单击 保存
back to the top

创建 Visual Basic.net 应用程序的步骤

  1. 启动 Visual Studio.net,并创建新的 Visual Basic 控制台应用程序项目。
  2. 将下面的代码添加到代码窗口的顶部:
    Imports System.Xml					
  3. 复制并粘贴以下代码在 Sub Main 过程中:
            Dim xmlreader1 As New XmlTextReader("C:\Books1.xml")        Dim xmlreader2 As New XmlTextReader("C:\Books2.xml")        Dim ds1 As New DataSet()        Try            ds1.ReadXml(xmlreader1)            Dim ds2 As New DataSet()            ds2.ReadXml(xmlreader2)            ds1.Merge(ds2)            ds1.WriteXml("C:\Books.xml", XmlWriteMode.IgnoreSchema)            Console.WriteLine("Completed merging XML documents")        Catch ex As Exception            Console.WriteLine(ex.Message)        End Try        Console.Read()					
  4. 生成并运行该应用程序。请注意在"完成合并 XML 文档"的邮件会出现在控制台窗口中。
  5. 关闭控制台窗口。请注意 Books.xml 文件创建在指定的路径。
  6. 打开 Books.xml。请注意从 Books2.xml 数据附加到 Books1.xml 到末尾。
back to the top

不同的 XML 文档方案

合并具有相同结构的 XML 文档

前面的 Visual Basic.net 示例说明了具有相同的结构的 XML 文档的输出。

back to the top

合并具有不同结构的 XML 文档

  1. 打开 Books2.xml,并替换为下面的 XML 的 XML:
    <?xml version="1.0" ?><SampleData><Customer>          <CustomerName>Bill Gates</CustomerName>          <PricePerUnit>5.95</PricePerUnit>          <ClosingDate>2001-12-16</ClosingDate></Customer><Customer>          <CustomerName>Bill Gates</CustomerName>          <PricePerUnit>5.95</PricePerUnit>          <ClosingDate>2001-12-16</ClosingDate></Customer></SampleData>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual Basic.net 项目。请注意从第二个文档 (Books2.xml) 节点追加到第一个 XML 文档 (Books1.xml)。
back to the top

合并与第二个文档包含其他元素的位置的相似结构的 XML 文档

  1. 打开 Books2.xml,并替换为下面的 XML 的 XML:
    <?xml version="1.0"?><catalog><book id="bk106">      <author>Randall, Cynthia</author>      <title>Lover Birds</title>      <genre>Romance</genre>      <price>4.95</price>      <publish_date>2000-09-02</publish_date>      <description>When Carla meets Paul at an ornithology       conference, tempers fly as feathers get ruffled.</description>   </book>   <book id="bk107">      <author>Thurman, Paula</author>      <title>Splish Splash</title>      <genre>Romance</genre>      <price>4.95</price>      <publish_date>2000-11-02</publish_date>      <description>A deep-sea diver finds true love twenty       thousand leagues beneath the sea.</description>   </book></catalog>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual Basic.net 项目。请注意从第二个文档节点追加到第一个 XML 文档。
back to the top

合并与第二个文档位置包含属性的相似结构的 XML 文档

  1. 打开 Books2.xml,并替换为下面的 XML 的 XML:
    <?xml version="1.0"?><catalog><book id="bk106" genre="Romance">      <author>Randall, Cynthia</author>      <title>Lover Birds</title>      <price>4.95</price>   </book>   <book id="bk107" genre="Romance">      <author>Thurman, Paula</author>      <title>Splish Splash</title>      <price>4.95</price>   </book>   <book id="bk108" genre="Horror">      <author>Knorr, Stefan</author>      <title>Creepy Crawlies</title>      <price>4.95</price>   </book>   </catalog>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual Basic.net 项目。请注意从第二个文档节点附加到在第一个的 XML 文档,并且是与第一个 XML 文档相同的结构。
back to the top

合并与第一个文档包含属性的位置的相似结构的 XML 文档

  1. Visual Basic 代码如下所示修改以便 Books1.xml 追加到 Books2.xml:
            Dim xmlreader1 As New XmlTextReader("C:\Books2.xml")        Dim xmlreader2 As New XmlTextReader("C:\Books1.xml")        Dim ds1 As New DataSet()        Try            ds1.ReadXml(xmlreader1)            Dim ds2 As New DataSet()            ds2.ReadXml(xmlreader2)            ds1.Merge(ds2)            ds1.WriteXml("C:\Books.xml", XmlWriteMode.IgnoreSchema)            Console.WriteLine("Completed merging XML documents")        Catch ex As Exception            Console.WriteLine(ex.Message)        End Try        Console.Read()					
  2. 再次运行 Visual Basic.net 项目。请注意结果 XML 文档将追加到 Books2.xml Books1.xml 从节点。此外,请注意所有簿节点包含"流派"的属性。

    因此,具体取决于第一个 XML 文档的结构,第二个 XML 文档被修改,以便生成 XML 更有意义的名称。
back to the top
参考
有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
286817HOWTO: 通过编程文档对象模型 (DOM) 合并两个 XML 文档中的数据
back to the top

属性

文章 ID:308066 - 上次审阅时间:12/06/2015 05:43:36 - 修订版本: 2.3

Microsoft Visual .NET 2002 标准版, Microsoft Visual Basic .NET 2003 标准版, Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbmt kbhowtomaster KB308066 KbMtzh
反馈