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

回复论坛中的问题而写的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"));



阅读更多
换一批

没有更多推荐了,返回首页