首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XPathNodeIterator返回XmlDocument

从XPathNodeIterator返回XmlDocument
EN

Stack Overflow用户
提问于 2010-07-16 01:08:05
回答 2查看 1.8K关注 0票数 1

我需要一些帮助来从XPathNodeIterator返回一个XmlDocument对象。

这是我想要做的:

代码语言:javascript
复制
public XmlDocument GetFilteredXML(XmlDocument baseXML, int codeID)
{
    XPathNavigator nav = baseXML.CreateNavigator();
    string xpath = /*some expression based on codeID*/;
    XPathExpression exp = nav.Compile(xpath);
    exp.AddSort(/*do some sorting*/);
    XPathNodeIterator iter = exp.Select(exp);

    // Here how do I return an XmlDocument object from
    // the iterator which contains the selected nodes only?
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-16 01:17:19

确切地说,XPathNodeIterator不包含节点。名称是一个线索-它是一个迭代器,这意味着它只包含如何迭代您想要的节点的逻辑。节点本身来自其他地方-在本例中,是您提供的原始baseXML对象。它们永远不会离开那个对象,您只需要创建一个知道如何导航文档的导航器和一个知道如何使用某些条件迭代导航器的迭代器。

要完成您所描述的操作,您需要创建一个新的XmlDocument,为它提供一个新的根元素,并且对于迭代器中的每个节点,调用ImportNode,然后调用Append。这将创建一个在根元素中包含所有选定节点的平面XmlDocument。

票数 2
EN

Stack Overflow用户

发布于 2010-07-16 01:17:54

这是一个选项:

代码语言:javascript
复制
if (iter.MoveNext())  // Position on first node selected,
{                     // assuming that it is the container for the desired result.
    XmlDocument output = new XmlDocument();
    output.LoadXml(iter.Current.OuterXml);
    return output;
}

然而,我认为你一开始就不需要把它变成XPathNavigator。您正在做哪些使用XmlDocument方法无法完成的操作?(在计算XPath表达式时,脑海中浮现出SelectNodes和SelectSingleNode )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3258071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档