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

文章翻译 文章翻译
文章编号: 311530 - 查看本文应用于的产品
本文的发布号曾为 CHS311530
展开全部 | 关闭全部

本文内容

概要

本文分步介绍如何使用数据集对象来合并两个 XML 文档。数据集对象都集中到支持断开连接,分布式数据与 ADO.NET 的方案。数据集是驻留在内存中的表示形式提供了一致的关系编程模型,而不考虑数据源的数据。数据集表示一套完整的数据,包括相关的表、 约束和表之间的关系。

要求

下面的列表概述了推荐使用的硬件、 软件、 网络基础结构和所需的服务包:
  • Microsoft Windows XP、 Windows 2000 或 Windows NT 4.0 Service Pack 6a (SP6a)
  • Microsoft Visual Studio.net
本文假定您熟悉下列主题:
  • Visual C#.net 语法
  • 可扩展标记语言 (XML)

创建 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然后单击保存

创建 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然后单击保存

创建可视 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 到末尾。

不同的 XML 文档方案

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

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

合并具有不同结构的 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)。

合并具有类似结构的第二个文档包含其他元素的 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 文档。

合并具有类似的结构,其中第二个文档都包含属性的 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 文档相同的结构。

合并具有类似结构的第一个文档包含属性的 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 是更有意义。

参考

其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
286817 如何通过编程文档对象模型 (DOM) 合并两个 XML 文档中的数据

属性

文章编号: 311530 - 最后修改: 2012年8月30日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Visual C# .NET 2002 标准版
  • Microsoft Visual C# .NET 2003 标准版
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
关键字:?
kbhowtomaster kbio kbsystemdata kbmt KB311530 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 311530
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com