C# 如何将xml文档的子节点附加到另一个(web服务)的根中?
我在ASP.NET 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
[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。