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

声明式编程与函数式思维:.NET开发者元能力升级指南 声明式编程是一种以‘做什么’(What)而非‘怎么做’(How)为核心的软件构造范式,其本质是通过抽象语法和领域特定语言(DSL)降低人类意图与机器执行之间的认知鸿沟。它依托函数式思维——如不可变性、纯函数、高阶操作——在C# LINQ、F# Actor模型及自定义内部DSL中落地;技术价值在于提升代码可读性、并发安全性与跨平台适配能力,广泛应用于高并发风控、实时流处理与医疗规则引擎等场景。本文结合Anders Hejlsberg经典趋势判断与.NET十二年工程实践,系统拆解如何将声明式理念转化为可测量、可 阅读详情

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

 

概要

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

相关推荐

C#如何拼接xml对象

//创建一个新的xml对象 XmlDocument NewXmlDoc = new XmlDocument(); XmlDeclaration xmldec; xmldec = NewXmlDoc.CreateXmlDeclaration("1.0", "gb2312", null); NewXmlDoc.AppendChild(xmldec);//加入一个...

北方的木的博客 2265

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

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

weixin_33883178的博客 233

C# 实现的XML读写合并

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

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

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

qq_41536282的博客 549

服务器安全配置:二、本地安全策略设置

密码最长使⽤期限”设置为“90天”;“⽤可以还原的加密来存储密码”设置为“禁⽤”“复位账户锁定计数器”设置为15分钟,贴图这里是我自己设置的时间,15分钟也够用,具体看自己需要。”网络访问: 不允许 SAM 帐户和共享的匿名枚举“设置为“已启用””网络访问: 限制对命名管道和共享的匿名访问“设置为“已启用””网络访问: 不允许匿名枚举 SAM 帐户“设置为“已启用”“关机: 允许系统在未登录的情况下关闭”设置为“已禁用”(1)交互式登录:不显示最后的⽤户名”设置为“已启⽤”

weixin_48825672的博客 3136

对单周期 RISC-V 处理器进行扩展

对单周期 RISC-V 处理器进行扩展

xiaoxian666的博客 1483

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

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

kongwei521的专栏 3495

1、Ovirt 开源虚拟化平台安装

Ovirt虚拟化Node和Engine安装

大鱼 6266

C#拼接xml

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

qq_41760419的博客 582

【A_Star三维路径规划】基于matlab A_Star算法结合B样条平滑三维地形路径规划(含雷达威胁)【含Matlab源码 3527期】

A_Star算法结合B样条平滑三维地形路径规划(含雷达威胁) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 741

MIMO-OFDM通信系统性能仿真及MATLAB实现

将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。

学习使你进步。 2218

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

本文的发布号曾为 CHS311530 有关本文的 Microsoft Visual Basic .NET 版本,请参见 308066。本文引用下面的 Microsoft .NET 框架类库名称空间: System.Xml System.Io System.Data本任务的内容概要 要求创建 Books1.xml 文件创建 Books2.xml 文件创建 Visu

833

液态神经网络(Liquid Neural Networks)从线虫大脑到下一代 AI

液态神经网络(Liquid Neural Networks,LNN)是一类具有动态内部结构的神经网络,其灵感来源于生物神经系统,尤其是大脑中神经元如何以复杂、非线性的方式响应外部刺激。与传统神经网络不同,液态神经网络的每个神经元在处理输入时,不再是静态线性或非线性变换,而是基于一个微分方程模型进行响应。这种建模方式使神经元的行为具有时间连续性和动态适应性。换句话说,它不仅“记住”过去的信息,还能根据当前环境实时调整自身的动态特性,这对于感知、决策、预测等任务都非常关键。

hello.reader 7416

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

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

chengcao123的博客 810

大疆RoboMaster嵌入式面试,电机FOC调不出来当场走人

摘要:大疆RoboMaster嵌入式工程师面试以实战能力著称,重点考察FreeRTOS任务调度、FOC电机控制和CAN总线三大核心技能。FreeRTOS部分涉及优先级调度、栈溢出排查及信号量与互斥锁的区别;FOC控制要求现场编写电流环代码,并解释Clarke/Park变换原理;CAN总线则关注仲裁机制、CANopen协议应用及错误帧排查方法。面试强调工程实践,需具备STM32开发经验,建议搭建实际环境进行练习。该岗位被誉为"硬件版修罗场",充分体现大疆对实际开发能力的严格要求。

郑伟强dev的专栏 150

[yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

针对yolov5和yolov8的主干网络进行替换。

PLH19990227的博客 4147

合并xml文件(添加新类)

cntr

zhang1009_的博客 996

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

银河刨冰的博客 3811

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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
上一篇: 用 XmlDocument 类修改和保存 XML
下一篇: 在.NET程序的窗体中使用XP风格的控件
PeterPlus
博客等级 码龄22年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值