xpath - 如何使用变量节点名称获取节点值?

标签 xpath xquery

我有一个像这样的 XML 文档:

<data>
    <item type="apple">
        <misc>something</misc>
        <appleValue>23</appleValue>
        <misc2>something else</misc2>
    </item>
    <item type="banana">
        <bananaValue>47</bananaValue>
        <random>something</random>
    </item>
</data>

我可以使用 doc("data.xml")/data/item 获取项目,但我需要从以 Value 结尾的元素中获取文本。所以我想得到“23”和“47”,但我不一定知道元素名称,这意味着我真正知道的是有以 Value 结尾的元素,我不知道不知道它是 appleValuebananaValue 等,除了我可以查看 type 属性并构建一个字符串。

let $type := (doc("data.xml")/data/item)[1]/@type
doc("data.xml")/data/item/$typeValue

...最后一行是我想要表达的意思,显然这是不正确的,但我需要根据变量找到名称已知的元素(存储在诸如 $type< 的变量中) 和“值”。

有什么想法吗?我意识到这个可变元素命名很奇怪/奇怪/不好...但事实就是如此,我必须处理它。

最佳答案

感谢这篇文章,我得到了它:Can XPath match on parts of an element's name?

doc("data.xml")/data/item/*[ends-with(name(), "Value")]

关于xpath - 如何使用变量节点名称获取节点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128806/

相关文章:

python - 在运行脚本的页面上查找 xpaths

java - 检查相同的文本是否出现在 2 个不同的 xpath 下

python - XPath 或 BeautifulSoup (或其他方式)来选择和解析某个 div block

SQL Server 在指定默认值时创建 XML 命名空间

xml - XML 中属性的名称->值对是否被视为由 XPATH 解释的两个节点?

通过 xslt 转换将 XML 文件转换为 output.xml

xml - XSLT - 选择另一个节点之后的节点

xquery - 如何获取 xdmp :unquote($record) 的基本 URI

java - 用于定义类似于 XQuery 或 SQL 语句的规则和操作的 UI

caching - 需要帮助重写 XQuery 以避免 MarkLogic 中扩展树缓存已满错误