You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现XPath嵌套属性匹配逻辑?请求技术协助

问题解答

是否可行?

完全可行,有两种实现方式:直接在XPath中引用目标值,或者在支持变量的环境下先存储值再调用。

直接编写XPath实现

不需要单独存储/A/B/@id的值,直接在谓词中做比较即可,对应的XPath表达式为:

/A/C[@parent = /A/B/@id]/text()

这个表达式会直接匹配所有parent属性值等于<B>节点id属性值的<C>节点,并返回其文本内容(示例中会返回PQR)。

先存储值再调用(支持变量的场景)

如果你的使用环境支持XPath变量(比如XSLT、Python的lxml库等),可以先将/A/B/@id的值存入变量,再在后续XPath中引用:
以XSLT为例:

<xsl:variable name="result" select="/A/B/@id"/>
<xsl:value-of select="/A/C[@parent = $result]/text()"/>

在Python lxml中可以这样写:

from lxml import etree

xml_content = '''
<A>
 <B id="1">W</B>
 <C parent="1">PQR</C>
 <C parent="2">ABC</C>
</A>
'''
tree = etree.fromstring(xml_content)
result = tree.xpath('/A/B/@id')[0]
target_text = tree.xpath(f'/A/C[@parent="{result}"]/text()')[0]
print(target_text)  # 输出 PQR

补充说明

无论哪种方式,都不要求<C>节点是<B>的紧邻节点,只要它们同属于<A>节点下即可,完全符合需求。

内容的提问来源于stack exchange,提问作者Divya MV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:27:14