Cha*_*amp 7 c# xml xmldocument
我正在尝试xmldocument通过不同的XML 创建对象
看下面的代码:
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
Run Code Online (Sandbox Code Playgroud)
错误:要插入的节点来自不同的文档上下文
编辑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);
}
Run Code Online (Sandbox Code Playgroud)
das*_*ash 10
您需要使用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);
Run Code Online (Sandbox Code Playgroud)
编辑
您非常接近您的答案,您现在面临的主要问题是您需要将新闻元素附加到主文档中.如果您希望输出文档如下所示,我建议您执行以下操作:
<news>
<newsItem>...</newsItem>
<newsItem>...</newsItem>
</news>
Run Code Online (Sandbox Code Playgroud)
相反,在创建docRSS时,不要创建新的XmlElement,而是执行以下操作:
XmlDocument docRss = new XmlDocument();
docRss.LoadXml("<news/>");
Run Code Online (Sandbox Code Playgroud)
您现在有一个如下所示的XmlDocument:
<news/>
Run Code Online (Sandbox Code Playgroud)
然后,而不是news.AppendChild简单地:
docRSS.DocumentElement.AppendChild(importNewsItem);
Run Code Online (Sandbox Code Playgroud)
这会将每个元素附加newsItem在news元素下(在本例中是文档元素).
| 归档时间: |
|
| 查看次数: |
15304 次 |
| 最近记录: |