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

如何合并两个使用 System.Xml 使用 Visual C#.net 的 XML 文档中的数据

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

点击这里察看该文章的英文版: 311530
本文已归档。它按“原样”提供,并且不再更新。
概要
本文分步介绍如何使用数据集对象来合并两个 XML 文档。数据集对象都集中到支持断开连接,分布式数据与 ADO.NET 的方案。数据集是驻留在内存中的表示形式提供了一致的关系编程模型,而不考虑数据源的数据。数据集表示一套完整的数据,包括相关的表、 约束和表之间的关系。

back to the top

要求

下面的列表概述了推荐使用的硬件、 软件、 网络基础结构和所需的服务包:
  • Microsoft Windows XP、 Windows 2000 或 Windows NT 4.0 Service Pack 6a (SP6a)
  • Microsoft Visual Studio.net
本文假定您熟悉下列主题:
  • Visual C#.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>Jeanette, Dasha</author>      <title>Quack the Duck</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>Vinzovskaia, Irina</author>      <title>Piano Fort A</title>      <genre>Romance</genre>      <price>4.95</price>   </book></catalog>					
  3. 文件菜单上单击保存
  4. 另存为对话框中保存类型下拉列表框中,单击所有文件。在文件名文本框中,键入 Books2.xml然后单击保存
back to the top

创建可视 C#.net 应用步骤

  1. 开始 Visual Studio.net,然后创建一个新的 Visual C# 控制台应用程序项目。
  2. 将下面的代码添加到代码窗口的顶部:
    using System;using System.Xml;using System.IO;using System.Data ;					
  3. 复制并粘贴以下代码,在静态 void Main (字符串 [] 参数):
    try	{		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books1.xml");		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books2.xml");		DataSet ds = new DataSet();		ds.ReadXml(xmlreader1);		DataSet ds2 = new DataSet();		ds2.ReadXml(xmlreader2);		ds.Merge(ds2);		ds.WriteXml("C:\\Books.xml");		Console.WriteLine("Completed merging XML documents");	}	catch (System.Exception ex)	{		Console.Write(ex.Message);	}Console.Read();						
  4. 生成并运行该应用程序。请注意"已完成合并 XML 文档"消息出现在控制台窗口中。
  5. 关闭控制台窗口。请注意将 Books.xml 文件创建在您指定的路径中。
  6. 打开 Books.xml。请注意 Books2.xml 中的数据追加到 Books1.xml 到末尾。
back to the top

不同的 XML 文档方案

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

上述 Visual C#.net 示例演示具有相同结构的 XML 文档的输出。

back to the top

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

  1. 打开 Books2.xml,然后用下面的 XML 替换 XML:
    <?xml version="1.0" ?><SampleData><Customer>          <CustomerName>Bob Frapples</CustomerName>          <PricePerUnit>5.95</PricePerUnit>          <ClosingDate>2001-12-16</ClosingDate></Customer><Customer>          <CustomerName>Bob Frapples</CustomerName>          <PricePerUnit>5.95</PricePerUnit>          <ClosingDate>2001-12-16</ClosingDate></Customer></SampleData>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual C#.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>Vinzovskaia, Irina</author>      <title>Piano Fort A</title>      <genre>Romance</genre>      <price>4.95</price>      <publish_date>2000-11-02</publish_date>      <description>Two young pianists strike a chord when they fight a       pitched battle to stop the gnomes at a key base.</description>   </book></catalog>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual C#.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>Vinzovskaia, Irina</author>      <title>Piano Fort A</title>      <price>4.95</price>   </book>   <book id="bk108" genre="Horror">      <author>de Dogg, Jazz</author>      <title>Night of the Flea</title>      <price>4.95</price>   </book>   </catalog>					
  2. 保存 Books2.xml。
  3. 再次运行 Visual C#.net 项目。请注意第二个文档中的节点添加到第一个 XML 文档,是与第一个 XML 文档相同的结构。
back to the top

合并具有类似结构的第一个文档包含属性的 XML 文档

  1. 以便 Books1.xml 追加到 Books2.xml,如下所示修改 C# 代码:
    try	{		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books2.xml");		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books1.xml");		DataSet ds = new DataSet();		ds.ReadXml(xmlreader1);		DataSet ds2 = new DataSet();		ds2.ReadXml(xmlreader2);		ds.Merge(ds2);		ds.WriteXml("C:\\Books.xml");		Console.WriteLine("Completed merging XML documents");	}	catch (System.Exception ex)	{		Console.Write(ex.Message);	}Console.Read();						
  2. 再次运行 Visual C#.net 项目。请注意生成的 XML 文档将追加的节点 (从 Books1.xml 到 Books2.xml。此外,请注意所有书节点包含"流派"的属性。

    因此,根据第一个 XML 文档的结构,第二个 XML 文档加以修改,以便生成的 XML 是更有意义。
back to the top
参考
其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
286817 如何通过编程文档对象模型 (DOM) 合并两个 XML 文档中的数据
back to the top

警告:本文已自动翻译

属性

文章 ID:311530 - 上次审阅时间:12/07/2015 08:06:28 - 修订版本: 1.0

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

  • kbnosurvey kbarchive kbhowtomaster kbio kbsystemdata kbmt KB311530 KbMtzh
反馈