C# 如何将xml文档的子节点附加到另一个(web服务)的根中?

C# 如何将xml文档的子节点附加到另一个(web服务)的根中?,c#,xml,web-services,appendchild,C#,Xml,Web Services,Appendchild,我在ASP.NET Web服务上创建了一个[WebMethod],它从不同的Web服务(ASP.NET和PHP服务)读取XML文档 一旦读取了文档,它们就会合并成XML并返回 该方法可以成功地从每个web服务读取XML文档,但当我尝试将第二个XML附加到第一个XML时,会得到ArgumentException,这样的消息要插入的节点来自不同的文档上下文。我找不到问题,是否与文档源有关?但这两个文档完全相同(具有相同的元素) 为什么ArgumentException?我错过了什么 [WebMeth

我在ASP.NET Web服务上创建了一个
[WebMethod]
,它从不同的Web服务(ASP.NET和PHP服务)读取XML文档

一旦读取了文档,它们就会合并成XML并返回

该方法可以成功地从每个web服务读取XML文档,但当我尝试将第二个XML附加到第一个XML时,会得到
ArgumentException
,这样的消息
要插入的节点来自不同的文档上下文。
我找不到问题,是否与文档源有关?但这两个文档完全相同(具有相同的元素)

为什么
ArgumentException
?我错过了什么

[WebMethod]
public XmlDocument getRestaurants(String search_keywords)
{
  XmlDocument xmlDom1 = new XmlDocument();
  xmlDom1 = getRestaurantFromAspNetWS(search_keywords);

  XmlTextReader myXmlTextReader = 
  new XmlTextReader
  ("http://some-iss.green.com/username/search.php?s=" + search_keywords);

  XmlDocument xmlDom2 = new XmlDocument();
  xmlDom2.Load(myXmlTextReader);

  foreach (XmlElement xmlNode in xmlDom2.DocumentElement.ChildNodes)
  {
     //trying to append childNodes of xmlDom2 into xmlDom1 
     //and this is where i get ArgumentException
     xmlDom1.DocumentElement.AppendChild(xmlNode);
  } 

  return xmlDom1;
}  

您需要使用importNode()导入节点 大概是这样的:

xmlDom1.DocumentElement.importNode(xmlNode, true);

你能这样写吗

public XElement getRestaurants(String search_keywords)
{
    XElement result = getRestaurantFromAspNetWS(search_keywords);

    XmlTextReader myXmlTextReader = new XmlTextReader
        ("http://some-iss.green.com/username/search.php?s=" + search_keywords);

    XElement reader = XElement.Load(myXmlTextReader);
    foreach (XElement child in reader.Elements())
        result.Add(child);

    return result;
}  

真正的诀窍是让您的自定义
getRestaurantFromAspNetWS
函数返回XElement而不是XmlDocument,因为您没有为我们提供该函数,我无法在这方面帮助您。

您必须使用XmlDocument而不是LINQ to XML吗?我更喜欢使用XmlDocument,但我愿意探索新的想法。你能指出一些要读的东西吗?您能看到上面代码中的问题吗?您应该看看
XmlDocument.ImportNode
,但我强烈建议您看看LINQ to XML。这是一个更好的XMLAPI。