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

来源:互联网 发布:nginx filter 编辑:程序博客网 时间:2024/05/23 05:08

回复论坛中的问题而写的DEMO 。问题地址:http://bbs.csdn.net/topics/390562500?page=1#post-395382320


要把XML2的中国的XML数据合并到XML1中国下面

XML1:

<?xml version="1.0" encoding="utf-8" ?><CountryCode><Country NameChs="安哥拉" NameEng="Angola" AbbrL2="AO" AbbrL3="ANG" RegionCode="244" GMT="1" /><Country NameChs="阿富汗" NameEng="Afghanistan" AbbrL2="AF" AbbrL3="AFG" RegionCode="93" GMT="8" /><Country NameChs="阿尔巴尼亚" NameEng="Albania" AbbrL2="AL" AbbrL3="ALB" RegionCode="355" GMT="1" /><Country NameChs="阿尔及利亚" NameEng="Algeria" AbbrL2="DZ" AbbrL3="ALG" RegionCode="213" GMT="0" /><Country NameChs="安道尔共和国" NameEng="Andorra" AbbrL2="AD" AbbrL3="AND" RegionCode="376" GMT="0" /><Country NameChs="中国" NameEng="China" AbbrL2="CN" AbbrL3="CHS" RegionCode="86" GMT="8" /></CountryCode>

XML2:

<?xml version="1.0" encoding="utf-8" ?><CityIndex><Country Name="中国" NameEng="China" Code="86"><StateProvince Name="北京" NameEng="Beijing"><City Name="北京市" NameEng="Beijing Shi" PostalCode="100000" /></StateProvince><StateProvince Name="天津" NameEng="TienTisn"><City Name="天津市" NameEng="TienTisn Shi" PostalCode="300000" /></StateProvince><StateProvince Name="河北省" NameEng="HeBei Sheng"><City Name="石家庄市" NameEng="ShiJiaZhuang Shi" PostalCode="050000" /><City Name="唐山市" NameEng="TangShan Shi" PostalCode="063000" /><City Name="秦皇岛市" NameEng="QinHuangDao Shi" PostalCode="066000" /><City Name="邯郸市" NameEng="HanDan Shi" PostalCode="056002" /><City Name="邢台市" NameEng="XingTai Shi" PostalCode="054000" /><City Name="保定市" NameEng="BaoDing Shi" PostalCode="071000" /><City Name="张家口市" NameEng="ZhangJiaKou Shi" PostalCode="075000" /><City Name="承德市" NameEng="ChengDe Shi" PostalCode="076000" /><City Name="沧州市" NameEng="CangZhou Shi" PostalCode="061000" /><City Name="廊坊市" NameEng="LangFang Shi" PostalCode="102800" /><City Name="衡水市" NameEng="HengShui Shi" PostalCode="053000" /></StateProvince></Country></CityIndex>

合并代码:

XmlDocument doc1 = new XmlDocument();doc1.Load(Server.MapPath(@"XMLFile1.xml"));XmlDocument doc2 = new XmlDocument();doc2.Load(Server.MapPath(@"XMLFile2.xml"));XmlNode root1 = doc1.DocumentElement;//获取所有节点为"CityIndex"的节点XmlNodeList xnl = doc2.SelectNodes("CityIndex"); foreach (XmlNode xnItem in xnl){XmlNode root2 = doc1.ImportNode(xnItem, true);root1.AppendChild(root2);}doc1.Save(Server.MapPath(@"XMLFile3.xml"));


合并后的效果如下:

<?xml version="1.0" encoding="utf-8"?><CountryCode>  <Country NameChs="安哥拉" NameEng="Angola" AbbrL2="AO" AbbrL3="ANG" RegionCode="244" GMT="1" />  <Country NameChs="阿富汗" NameEng="Afghanistan" AbbrL2="AF" AbbrL3="AFG" RegionCode="93" GMT="8" />  <Country NameChs="阿尔巴尼亚" NameEng="Albania" AbbrL2="AL" AbbrL3="ALB" RegionCode="355" GMT="1" />  <Country NameChs="阿尔及利亚" NameEng="Algeria" AbbrL2="DZ" AbbrL3="ALG" RegionCode="213" GMT="0" />  <Country NameChs="安道尔共和国" NameEng="Andorra" AbbrL2="AD" AbbrL3="AND" RegionCode="376" GMT="0" />  <Country NameChs="中国" NameEng="China" AbbrL2="CN" AbbrL3="CHS" RegionCode="86" GMT="8" />  <CityIndex>    <Country Name="中国" NameEng="China" Code="86">      <StateProvince Name="北京" NameEng="Beijing">        <City Name="北京市" NameEng="Beijing Shi" PostalCode="100000" />      </StateProvince>      <StateProvince Name="天津" NameEng="TienTisn">        <City Name="天津市" NameEng="TienTisn Shi" PostalCode="300000" />      </StateProvince>      <StateProvince Name="河北省" NameEng="HeBei Sheng">        <City Name="石家庄市" NameEng="ShiJiaZhuang Shi" PostalCode="050000" />        <City Name="唐山市" NameEng="TangShan Shi" PostalCode="063000" />        <City Name="秦皇岛市" NameEng="QinHuangDao Shi" PostalCode="066000" />        <City Name="邯郸市" NameEng="HanDan Shi" PostalCode="056002" />        <City Name="邢台市" NameEng="XingTai Shi" PostalCode="054000" />        <City Name="保定市" NameEng="BaoDing Shi" PostalCode="071000" />        <City Name="张家口市" NameEng="ZhangJiaKou Shi" PostalCode="075000" />        <City Name="承德市" NameEng="ChengDe Shi" PostalCode="076000" />        <City Name="沧州市" NameEng="CangZhou Shi" PostalCode="061000" />        <City Name="廊坊市" NameEng="LangFang Shi" PostalCode="102800" />        <City Name="衡水市" NameEng="HengShui Shi" PostalCode="053000" />      </StateProvince>    </Country>  </CityIndex></CountryCode>

XML2里面的节点为

<CityIndex>北京</CityIndex>

这样的话合并代码为

XmlDocument doc1 = new XmlDocument();doc1.Load(Server.MapPath(@"XMLFile1.xml"));XmlDocument doc2 = new XmlDocument();doc2.Load(Server.MapPath(@"XMLFile2.xml"));XmlNode root1 = doc1.DocumentElement;XmlNode root2 = doc1.ImportNode(doc2.DocumentElement.FirstChild, true);root1.AppendChild(root2);//如果有多个节点的话可以用下面代码 foreach(XmlNode n  in doc2.DocumentElement.ChildNodes)    {    XmlNode root2 = doc1.ImportNode(n, true);    root1.AppendChild(root2);     } doc1.Save(Server.MapPath(@"XMLFile3.xml"));



原创粉丝点击