2013-12-19 95 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