gpt4 book ai didi

c# - 从另一个文档创建 xmlDocument

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:14 26 4
gpt4 key购买 nike

我正在尝试通过不同的 XML 创建一个 xmldocument 对象

看下面的代码:

objNewsDoc.LoadXml(strNewsDetail);       // Current XML
XmlDocument docRss = new XmlDocument(); // new Xml Object i Want to create

XmlElement news = docRss.CreateElement("news"); // creating the wrapper news node
news.AppendChild(objNewsDoc.SelectSingleNode("newsItem")); // adding the news item from old doc

错误:要插入的节点来自不同的文档上下文

编辑 1 个完整的代码块:

try
{
XmlDocument objNewsDoc = new XmlDocument();
string strNewsXml = getNewsXml();
objNewsDoc.LoadXml(strNewsXml);

var nodeNewsList = objNewsDoc.SelectNodes("news/newsListItem");
XmlElement news = docRss.CreateElement("news");
foreach (XmlNode objNewsNode in nodeNewsList)
{
string newshref = objNewsNode.Attributes["href"].Value;
string strNewsDetail = getNewsDetailXml(newshref);
try
{
objNewsDoc.LoadXml(strNewsDetail);
XmlNode importNewsItem = docRss.ImportNode(objNewsDoc.SelectSingleNode("newsItem"), true);
news.AppendChild(importNewsItem);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}

}

docRss.Save(Response.Output);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}

最佳答案

您需要使用 Import Node将 XmlNode 从第一个文档导入到第二个文档的上下文的方法:

objNewsDoc.LoadXml(strNewsDetail);       // Current XML
XmlDocument docRss = new XmlDocument(); // new Xml Object i Want to create

XmlElement news = docRss.CreateElement("news"); // creating the wrapper news node
//Import the node into the context of the new document. NB the second argument = true imports all children of the node, too
XmlNode importNewsItem = docRss.ImportNode(objNewsDoc.SelectSingleNode("newsItem"), true);
news.AppendChild(importNewsItem);

编辑

您非常接近您的答案,您现在遇到的主要问题是您需要将新闻元素附加到主文档。如果您希望输出文档看起来像这样,我建议您执行以下操作:

<news>
<newsItem>...</newsItem>
<newsItem>...</newsItem>
</news>

与其创建新的 XmlElement、news,不如在创建 docRSS 时执行以下操作:

XmlDocument docRss = new XmlDocument();
docRss.LoadXml("<news/>");

您现在有一个如下所示的 XmlDocument:

<news/>

然后,而不是 news.AppendChild,只需:

docRSS.DocumentElement.AppendChild(importNewsItem);

这会将每个 newsItem 附加到 news 元素(在本例中为文档元素)下。

关于c# - 从另一个文档创建 xmlDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com