C#将多个XMLNode或XMLNodeList从一个XMLDocument复制到另一个XMLDocument

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#将多个XMLNode或XMLNodeList从一个XMLDocument复制到另一个XMLDocument相关的知识,希望对你有一定的参考价值。

我搜索和搜索过,但一直无法找到我正在寻找的东西。可能只是我对XML缺乏了解,因为这是我第一次真正玩它。

基本上我连接到Pardot API并请求所有潜在客户。但是,数据是分页的,所以我一次只能获得200个潜在客户,并且它们以XML格式返回。我需要做的是,在循环中不断浏览分页数据并获取XML响应时,我需要将每个响应的XML数据复制到一个新文档中,最后将包含所有内容响应。

我有类似的东西,它在第一次迭代时起作用,但是在下一次迭代期间,它在finalXmlDoc.AppendChile(impNode);失败并显示错误消息:“此文档已经有一个'DocumentElement'节点。”

            var xmlDoc = new XmlDocument();
            var finalXmlDoc = new XMLDocument();

            while (true)
            {
                 //BUILD URL FOR EACH ITERATION AND DO AN HTTP GET                                       

                 xmlDoc.Load(prospectResp);

                 var nodes = xmlDoc.DocumentElement.SelectNodes("/rsp/result/prospect");

                 foreach (XmlNode node in nodes)
                 {
                     impNode = finalXmlDoc.ImportNode(node, true);

                     finalXmlDoc.AppendChild(impNode);
                 }                
                 // EVENTUALLY BREAK LOOP AND EXPORT finalXmlDoc
            }

这是我的搜索让我的,但我猜有一个更容易的方法来做到这一点。

答案

在finalXML中创建一个根元素,并将所有内容追加到DocumentElement。只需加载一个简单的“

var xmlDoc = new XmlDocument();
            var finalXmlDoc = new XMLDocument();
            finalXmlDoc.LoadXml( "<xml/>" );


            while (true)
            {
                 //BUILD URL FOR EACH ITERATION AND DO AN HTTP GET                                       

                 xmlDoc.Load(prospectResp);

                 var nodes = xmlDoc.DocumentElement.SelectNodes("/rsp/result/prospect");

                 foreach (XmlNode node in nodes)
                 {
                     impNode = finalXmlDoc.ImportNode(node, true);

                     finalXmlDoc.DocumentElement.AppendChild(impNode);
                 }                
                 // EVENTUALLY BREAK LOOP AND EXPORT finalXmlDoc
            }

"

以上是关于C#将多个XMLNode或XMLNodeList从一个XMLDocument复制到另一个XMLDocument的主要内容,如果未能解决你的问题,请参考以下文章

如何用同名节点的所有子节点填充 XmlNodeList?

在 XmlNodeList 上使用 LINQ

使用 string[] 在 XmlNode 中查找最新日期

如何检查多个 XMLNode 属性的空值?

怎样获取xml中当前节点的直接孩子节点个数

WebService的简单运用添加删除