c# - 我如何使用 XPathNavigator 访问 XML Child 的索引?

标签 c# xml xpath xmldocument xpathnodeiterator

我想创建一个编译字符串以将其与 XPathExpression 一起使用。我已经导航到一个子集并创建了一个迭代器。基于该迭代器的当前位置,我创建了一个新的 currentNode。现在我想创建指向那个节点的确切表达式,并且只创建那个节点,这样我就可以创建一个只选择这些子节点的迭代器。

    public XPathNodeIterator extractSubChildIterator(XPathNavigator currentNode)
    {
        XPathNavigator nav = currentNode.Clone();
        string myXPathString = "/"+ nav.LocalName + "["+ HOWDOIGETTHISNUMBER(nav) +"]";
        while (nav.MoveToParent())
        {
            if (!(nav.Name == ""))
                myXPathString = "/" + nav.LocalName + "[" + HOWDOIGETTHISNUMBER(nav) + "]" + myXPathString;
        }
        myXPathString += "/*";

        XPathExpression expr = nav.Compile(myXPathString);
        return currentNode.Select(expr);
    }

函数 HOWDOIGETTHISNUMBER() 是我不太明白的东西的占位符。我将我的表达式字符串基于 This Page 上的示例列表- "/catalog/cd[1] 选择目录的第一个 cd 子目录"

最佳答案

    string myXPathString = "/"+ nav.LocalName + "["+ HOWDOIGETTHISNUMBER() +"]"; 

您想要构造和计算此 XPath 表达式:

"count(preceding-sibling::*[name()=''" + nav.LocalName +"]"

关于c# - 我如何使用 XPathNavigator 访问 XML Child 的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4411809/

相关文章:

c# - 获取 Azure 虚拟机状态

sql-server - Xpath 为有效的 Xpath 表达式返回 NULL

python - 如何计算来自同一父节点的 XPath 中的 2 个不同节点集(兄弟节点)?

xml - Soap xml 响应使用 xsd 文件进行验证

Java-从网站读取数据

Java Selenium 选择

c# - 绑定(bind)不适用于自定义用户控件的依赖属性

c# - 如何在.Net Core 2 中控制依赖注入(inject)的范围

c# - 服务器重启时如何从实例存储中加载具有多个工作流定义的可运行实例

android - 这样的渐变?