在C#中合并两个XML文档

时间:2013-12-19 10:37:20

标签: c# xml

以下是我的两个xml文档,

 XmlDocument Read_XML_Id=new XmlDocument();
 string xml_id = ServiceClient.QueryObjectsAsXml(sessionId, "["+id+"]","", "", "id", "");
 Read_XML_Id.LoadXml(xml_id);

 XmlDocument Read_XML_recurs = new XmlDocument();
 string Read_xml_count= ServiceClient.QueryObjectsAsXml(sessionId, "[" + id + "].childobjects", "", "", "id", "");
 Read_XML_recurs.LoadXml(Read_xml_count);

我正在尝试以下面的方式在我从其他同类问题进行的研究的基础上进行

 foreach(var childNode in Read_XML_Id.DocumentElement.ChildNodes)
      {
         Read_XML_recurs.DocumentElement.AppendChild(childNode);
      }

我收到如下错误,

'system.xml.xmlnodes.appendchild(system.xml.xmlnode)'的最佳重载方法匹配有一些无效的参数 我想将一个字符串的xml内容附加到另一个字符串中,以便我可以将两个字符串的内容一起解析,

我的第一个xml_id字符串内容低于数据

"<ResultSetHierarchy totalResultsReturned=\"1\" totalResults=\"1\" firstIndex=\"0\" 
  maxCount=\"-1\">\r\n  
    <object id=\"SC.1938773693.1856501971\" />\r\n
 </ResultSetHierarchy>"

和第二个Read_xml_count字符串包含,

"<ResultSetHierarchy totalResultsReturned=\"4\" totalResults=\"4\" firstIndex=\"0\" 
   maxCount=\"-1\">
     <object id=\"SC.1938773693.2003244210\" />
     <object id=\"SC.1938773693.1129051616\" />
     <object id=\"SC.1938773693.182363421\" />
     <object id=\"SC.1938773693.1706904642\" />
 </ResultSetHierarchy>"

我最终希望第二个Read_xml_count字符串数据的内容如下所示,

 "<ResultSetHierarchy totalResultsReturned=\"4\" totalResults=\"4\" firstIndex=\"0\" 
   maxCount=\"-1\">
     <object id=\"SC.1938773693.1856501971\" />--------Data from first XML string
     <object id=\"SC.1938773693.2003244210\" />
     <object id=\"SC.1938773693.1129051616\" />
     <object id=\"SC.1938773693.182363421\" />
     <object id=\"SC.1938773693.1706904642\" />
 </ResultSetHierarchy>"

任何帮助将不胜感激,

1 个答案:

答案 0 :(得分:2)

尝试使用以下LINQ解决方案

XDocument xdoc1 = XDocument.Parse(xml_id);
XDocument xdoc2 = XDocument.Parse(xml_read);
xdoc2.Root.AddFirst(xdoc1.Root.Elements("object"));

Console.WriteLine(xdoc2.ToString());

foreach (var item in xdoc2.Root.Descendants("object"))
{
    Console.WriteLine("{0} : {1} from {2}", item.Attribute("id").Name, item.Attribute("id").Value, item.ToString());
}

结果是XDocument,其中包含合并的文档。