C# 将多个 XMLNodes 或 XMLNodeList 从一个 XMLDocument 复制到另一个
C# Copying Multiple XMLNodes or XMLNodeList from One XMLDocument to Another
我找了又找,但没能准确找到我要找的东西。这可能只是我对XML缺乏了解,因为这是我第一次真正玩弄它。
基本上我正在连接到 Pardot API 并请求所有潜在客户。但是数据是分页的,所以我一次只得到200个prospect,返回的是XML格式。我需要做的是,在不断遍历分页数据并获得 XML 响应的循环中,我需要将每个响应的 XML 数据复制到一个新文档中,最后, 将包含所有回复的内容。
我有这样的东西,它在第一次迭代时有效,但在下一次迭代中它在 finalXmlDoc.AppendChile(impNode);
失败并显示错误消息:"This document already has a 'DocumentElement' node."
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
}
这就是我的搜索结果,但我想有一种更简单的方法可以做到这一点。
在您的最终 XML 中创建一个根元素,并将所有内容附加到 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
}
我找了又找,但没能准确找到我要找的东西。这可能只是我对XML缺乏了解,因为这是我第一次真正玩弄它。
基本上我正在连接到 Pardot API 并请求所有潜在客户。但是数据是分页的,所以我一次只得到200个prospect,返回的是XML格式。我需要做的是,在不断遍历分页数据并获得 XML 响应的循环中,我需要将每个响应的 XML 数据复制到一个新文档中,最后, 将包含所有回复的内容。
我有这样的东西,它在第一次迭代时有效,但在下一次迭代中它在 finalXmlDoc.AppendChile(impNode);
失败并显示错误消息:"This document already has a 'DocumentElement' node."
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
}
这就是我的搜索结果,但我想有一种更简单的方法可以做到这一点。
在您的最终 XML 中创建一个根元素,并将所有内容附加到 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
}