xpath - XPath查询匹配特定模式的节点名称

标签 xpath

有没有一种方法可以将XPath的starts-with函数应用于节点的名称而不是其值?我想从以下XML文档中选择FOObarFOObaz节点,而不选择notFOO节点:

<?xml version="1.0" encoding="UTF-8" ?>
<RootNode>
    <FOObar xmlns="http://sample.example.com">
        <value>numOne</value>
    </FOObar>
    <FOObaz xmlns="http://sample.example.com">
        <value>numTwo</value>
    </FOObaz>
    <notFOO xmlns="http://sample.example.com">
        <value>numThree</value>
    </notFOO>
</RootNode>


我知道可以使用starts-with根据文本节点进行搜索,例如

//sample:value[starts-with(.,'num')]


有没有一种方法可以编写以下在语法上有效的内容?

//sample:[starts-with(node(),'FOO')]


这个问题最初与SSCCE一起提供,但是现在回答了该问题,所有代码都变得混乱。当然,它仍然在revision history中可用。

最佳答案

使用name()local-name()函数按名称引用节点:

//*[starts-with(local-name(), 'FOO')]

关于xpath - XPath查询匹配特定模式的节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167369/

相关文章:

java - 条件表达式中的 XPath 谓词

html - 在 Html Agility Pack 中按位置选择特定元素

python - 类型错误 : 'FirefoxWebElement' object is not iterable

python - 如何使用 lxml Python(来自 .XML 文件)有效解析特定行?

xml - 使用 xPath 从表中获取特定数据

xslt - 按部分值分组子元素

java - 无法通过 Selenium 和 WebDriver 定位元素

Xpath 获取介于 2 个元素之间的元素

Python:如果在没有命名空间的情况下添加新元素,则 xpath.find() 将找不到新元素

C# XPATH 选择子节点内部文本所在的属性