2013-12-19 79 views
1

下面是我的两个XML文档,合并在C#两个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>" 

任何帮助将不胜感激,

回答

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将包含合并的文档。

+0

@kami ...我如何从xdoc2中获取元素,该元素被标记为object .. becaues,当我使用xmldocument ..然后读取标记为object的元素作为var get_node_value = Read_XML_recurs.GetElementsByTagName( “object”); ..但我不知道如何从xdocument读取.. – Reshma

+0

@Reshma我已经扩展了包含示例循环的答案。 – Kami