311530 HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据 (From MKBA)

深入探索C#中的XML处理:从基础到高级应用 在现代软件开发中,数据交换和配置管理是不可或缺的部分。XML(eXtensible Markup Language)因其结构化和自描述的特性,成为了许多应用的首选格式。C#作为.NET框架的核心语言,提供了强大的内置XML处理功能,使得开发者可以轻松地解析、生成和操作XML数据。本文将详细介绍C#中处理XML的各种方法,包括基础的XML文档操作、XPath查询、XSLT转换等,并提供实际的代码示例,帮助开发者深入理解并应用这些功能。 阅读详情

311530 HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据 (From MKBA)

本文的发布号曾为 CHS311530

概要

本分步指导文章说明了如何使用 DataSet 对象合并两个 XML 文档。在使用 ADO.NET 支持断开连接的、分布式的数据方案时, DataSet(数据集)对象是关键所在。 数据集是数据在内存中的表示形式,它提供了一致的关系编程模型,而不用关心数据源的位置。 数据集表示完整的一组数据,包括相关的表、约束以及各表之间的关系。

返回页首

要求

下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:
  • 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' encoding='utf-16'?>
    <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. 复制以下 XML 并将其粘贴到 Books2.xml 中:
    <?xml version='1.0' encoding='utf-16'?>
    <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,然后单击保存。
返回页首

创建 Visual C# .NET 应用程序的步骤

  1. 启动 Visual Studio .NET,然后新建一个 Visual C# 控制台应用程序项目。
  2. 将下面的代码添加到"代码"窗口顶部:
    using System;
    using System.Xml;
    using System.IO;
    using System.Data ;
  3. 复制以下代码并将其粘贴到 static void Main(string[] args) 中:
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C://Books1.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C://Books2.xml");
    
    		DataSet ds = new DataSet();
    		s.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. 生成并运行该应用程序。请注意,"控制台"窗口中会显示消息:Completed merging XML documents(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' encoding='utf-16'?>
    <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 metro 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' encoding='utf-16'?>
    <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. 按照以下方式修改 Visual C# 代码,以便将 Books1.xml 附加到 Books2.xml 中:
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C://Books2.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C://Books1.xml");
    
    		DataSet ds = new DataSet();
    		s.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 中。另外您会注意到,所有的 Book 节点都包含"genre"属性。

    因此,根据第一个 XML 文档的结构,需要对第二个 XML 文档加以修改以便使生成的 XML 更有意义。
返回页首

参考

有关其他信息,请单击下面的文章编号以查看 Microsoft 知识库中的文章:

286817 HOWTO: Merge Data in Two XML Documents by Programming the Document Object Model (DOM)(HOWTO:通过对文档对象模型 (DOM) 进行编程来合并两个 XML 文档中的数据)

返回页首
C#如何拼接xml对象 //创建一个新的xml对象 XmlDocument NewXmlDoc = new XmlDocument(); XmlDeclaration xmldec; xmldec = NewXmlDoc.CreateXmlDeclaration("1.0", "gb2312", null); NewXmlDoc.AppendChild(xmldec);//加入一个... 阅读详情

相关推荐

C# 实现的XML读写合并

本程序实现了对XML文件的读写以及合并。首先读入Arraylist内存中,操作完成后由内存再写入文件中。

HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据

HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据 概要本分步指导文章说明了如何使用 DataSet 对象合并两个 XML 文档。在使用 ADO.NET 支持断开连接的、分布式的数据方案时,DataSet(数据集)对象是关键所在。数据集是数据在内存中的表示形式,它提供了一致的关系编程模型,而不用关心数据源的位置。数据集表示完整的

PeterPlus的专栏 2152

第4课 SiC MOSFET的动态特性——关断过程

本文分析了SiC MOSFET的关断过程,将其划分为四个阶段:栅源电容放电阶段(t6-t7)、米勒平台阶段(t7-t8)、电压过冲阶段(t8-t9)和换流结束阶段(t9-t10)。通过等效电路详细描述了各阶段的电压电流变化特点。同时探讨了MOSFET的极间电容特性,包括输入电容Ciss、输出电容Coss和反向转移电容Crss,分析了它们对器件开关速度、损耗及电压变化速率的影响。研究指出这些非线性电容会显著影响器件的动态性能。

嵌入式老牛的博客 1045

C#如何将两个XmlDocument合并为一个XmlDocument

XmlDocument xd = new XmlDocument(); //添加顶级结点(如果不添加一个节点的话,无法使用xd.DocumentElement.AppendChild,会报出:未将对象引用设置到对象的实例的错误) XmlElement xe = xd.CreateElement("XmlDocumentTest"); xd.Append...

weixin_33883178的博客 233

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1591

OpenCV视频防抖算法实现与优化指南

本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。

weixin_29062823的博客 341

C# 检测两个xml文件的不同并提取,提取完再合并回去

C# 检测不同的xml并提取提取不同再把xml合并回去 提取不同 string appPath = System.Windows.Forms.Application.StartupPath; void ExtractXml() { //线上 string uiXmlPath1 = appPath + "\\uiExport1.xml"; //合并 string uiXmlPath2

qq_41536282的博客 549

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB使用贝叶斯bnt网络工具箱:使用手册详解

WW、forever的博客 2676

在C# .NET 中 合并两个 XML 文档中的数据

回复论坛中的问题而写的DEMO 。问题地址:http://bbs.csdn.net/topics/390562500?page=1#post-395382320 要把XML2的中国的XML数据合并到XML1中国下面 XML1: XML2:

kongwei521的专栏 3495

微信小程序 - 强力解决播放视频卡顿问题,小程序使用video组件播放视频或第三方视频插件,会出现卡顿或者无法播放的各种奇怪问题(微信小程序苹果ios/安卓播放视频很卡不流畅、视频太长或文件大等情况)

微信小程序视频组件播放卡顿,微信小程序video组件出现无法播放或卡顿,微信小程序video组件播放时会出现卡顿,微信小程序使用video组件播放视频的时候,会出现卡顿或者无法播放的问题,微信小程序安卓视频播放卡顿问题,微信小程序苹果ios手机播放视频不流畅很卡,加cdn还是卡,uniapp播放视频会有明显的卡顿问题,video视频时卡顿不流畅问题,为什么video组件播放视频卡顿?苹果微信小程序通过video组件播放视频时卡顿,怎么解决?微信小程序video组件出现无法播放或卡顿,设置custom-cac

🏆 前端领域优质创作者 1万+

把外部系统接到 SAP Build Process Automation 的两条路:前台直连与后台编排的完整范式

想把外部系统接入到你的【销售订单管理】审批流程,最稳妥的路径是:在流程里开一个,在 BTP 配好以为核心的 Destination,让前端经由approuter代理、后台通过 Cloud SDK 直连,任务处理用My Inbox或Task APIs,异步对接用。这套组合拳,既满足安全边界与运维规范,又能让前台与后台两个世界各取所需、自然衔接。SAP。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1661

C#拼接xml

010001测试11、xml字符串示例。

qq_41760419的博客 582

基于Spring Boot 3 + Vue 3 + Vite的现代化社区订餐系统设计与实现

本文将详细阐述系统的整体架构、数据库设计、核心功能模块(用户管理、餐厅管理、菜品浏览、购物车、订单管理)的实现细节,并提供关键代码示例。<el-input v-model="loginForm.password" type="password" placeholder="密码" prefix-icon="Lock" show-password />.requestMatchers("/api/auth/**", "/api/dishes/public/**").permitAll() // 公开接口。

2201_76125393的博客 468

c# 与xml简析及序列化与反序列化

XML 被设计用来传输和存储数据。

chengcao123的博客 810

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

关于C#下OfficeOpenXml对excel合并的处理

关于C#下OfficeOpenXml对excel合并的处理 直接上代码: ExcelRange excelRange1 = wkSheet.Cells[3, 1, 6, 1]; excelRange1.Merge = true; wkSheet是所要操作的excel的ExcelWorkSheet,至于如何获取,在这里就不多说,想知道的同学,请自行百度。 excelRange1是excel文件she...

银河刨冰的博客 3811

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C#—— XML的处理(string 和 xml 的相互转化)

一、实体类转为 XML字符串 string requestXML = Serializer(typeof(CnoocSAPAccountPay.DT_Entrade_AccountPay_SAP_Request), req);//CnoocSAPAccountPay.DT_Entrade_AccountPay_SAP_Request为实体类类型,req为实体类对象 private string Serializer(Type type, object obj) {

qq_37233070的博客 4234

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

合并xml文件(添加新类)

cntr

zhang1009_的博客 996

c# XML 有多个重复子节点操作

1,继续添加ebm子节点 public static void CreateXml() { //创XML建对象 XmlDocument doc = new XmlDocument(); //声明根节点 XmlElement books; //判断文件是否存在 if (File.Exists("d://Test.xml")) ...

你要明白,任何问题都不是孤立存在的,一定有人曾经遇到过,并且已经有更好的解决办法了,只是我还不知道。我不应该在黑暗中独自前行,去重新发明轮子,也许我的顿悟,只是别人的基本功!我应该要站在巨人的肩膀上,学习更成熟的经验和方法,然后再来解决这个问题 3263

xml的拼接+数据的解析

1,c#中使用StringBuilder 来拼接字符串var storeids = storeid.Split(',');   //需要拼接的数组var storebuilder = new StringBuilder();                storebuilder.Append("&lt;stores&gt;");                foreach (var sid i...

wyl1486264100的博客 2182

c# 两个xml文件的对比修改

        #region 对比修改        /// &lt;summary&gt;        /// 对比修改        /// &lt;/summary&gt;        /// &lt;param name="f"&gt;文件名称&lt;/param&gt;        void compareAlter(string f)        {            s...

super_xiao_xiao的博客 7189
上一篇: ASP.NET 2.0,写无限级下拉菜单不再难!!
下一篇: 李开复博士的网站
gmplayer
博客等级 码龄22年 2粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值