本文演示如何使用
DataSet 对象合并两个 XML 文档。
DataSet 对象都集中到支持已断开连接,分发与 ADO.NET 数据方案。
数据集 是驻留在内存中的表示形式提供一致的、 关系的编程模型,无论数据源的数据。
数据集 表示一组完整的包括相关的表、 约束,和表之间关系的数据。
要求
下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
- Windows XP、 Windows 2000 或 Windows NT 4.0 Service Pack 6a (SP6a)
- Microsoft Visual Studio.net
本文假定您熟悉下列主题:
- Visual Basic.net 语法
- 可扩展标记语言 (XML)
创建 Books1.xml 文件
- 从 Windows 开始 菜单中单击 运行,键入 Notepad.exe,然后单击 确定。
- 突出显示下面的代码,用鼠标右键单击该的代码,然后单击 复制。在记事本,中的 编辑 菜单上单击 粘贴
<?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>
- 在 文件 菜单上单击 保存。
- 在 另存为 对话框在 保存类型 下拉列表中单击 所有文件。在 文件名 文本框中键入 Books1.xml,然后单击 保存。
创建 Books2.xml 文件
- 在记事本,中创建名为 Books2.xml 一个新的文本文件。
- 复制并粘贴到 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>
- 在 文件 菜单上单击 保存。
- 在 另存为 对话框在 保存类型 下拉列表中单击 所有文件。在 文件名 文本框中键入 Books2.xml,然后单击 保存。
创建 Visual Basic.net 应用程序的步骤
- 启动 Visual Studio.net,并创建新的 Visual Basic 控制台应用程序项目。
- 将下面的代码添加到代码窗口的顶部:
- 复制并粘贴以下代码在 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()
- 生成并运行该应用程序。请注意在"完成合并 XML 文档"的邮件会出现在控制台窗口中。
- 关闭控制台窗口。请注意 Books.xml 文件创建在指定的路径。
- 打开 Books.xml。请注意从 Books2.xml 数据附加到 Books1.xml 到末尾。
不同的 XML 文档方案
合并具有相同结构的 XML 文档
前面的 Visual Basic.net 示例说明了具有相同的结构的 XML 文档的输出。
合并具有不同结构的 XML 文档
- 打开 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>
- 保存 Books2.xml。
- 再次运行 Visual Basic.net 项目。请注意从第二个文档 (Books2.xml) 节点追加到第一个 XML 文档 (Books1.xml)。
合并与第二个文档包含其他元素的位置的相似结构的 XML 文档
- 打开 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>
- 保存 Books2.xml。
- 再次运行 Visual Basic.net 项目。请注意从第二个文档节点追加到第一个 XML 文档。
合并与第二个文档位置包含属性的相似结构的 XML 文档
- 打开 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>
- 保存 Books2.xml。
- 再次运行 Visual Basic.net 项目。请注意从第二个文档节点附加到在第一个的 XML 文档,并且是与第一个 XML 文档相同的结构。
合并与第一个文档包含属性的位置的相似结构的 XML 文档
- 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()
- 再次运行 Visual Basic.net 项目。请注意结果 XML 文档将追加到 Books2.xml Books1.xml 从节点。此外,请注意所有簿节点包含"流派"的属性。
因此,具体取决于第一个 XML 文档的结构,第二个 XML 文档被修改,以便生成 XML 更有意义的名称。
有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
286817
(http://support.microsoft.com/kb/286817/EN-US/
)
HOWTO: 通过编程文档对象模型 (DOM) 合并两个 XML 文档中的数据
文章编号: 308066 - 最后修改: 2003年9月4日 - 修订: 2.3
这篇文章中的信息适用于:
- Microsoft Visual .NET 2002 标准版
- Microsoft Visual Basic .NET 2003 标准版
- Microsoft .NET Framework 1.0
- Microsoft .NET Framework 1.1
| kbmt kbhowtomaster KB308066 KbMtzh |
机器翻译注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版:
308066
(http://support.microsoft.com/kb/308066/en-us/
)
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。