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

如何执行XML节点B中存储的XPath表达式以获取节点A的值?

解决XML中执行节点存储的XPath表达式问题

问题原因

你之前用(B/text())/text()这类写法行不通,核心原因是XPath本身不支持直接将字符串当作表达式动态执行——B/text()只能取出节点B里的文本字符串,没法把这个字符串当成XPath去解析运行。

解决方案

根据你使用的XPath版本,有两种处理方式:

1. XPath 2.0及以上版本

XPath 2.0+提供了evaluate()函数,可以直接执行字符串形式的XPath表达式。假设你的上下文节点是<Example>,使用以下表达式即可:

evaluate(B/text())

这个函数会把节点B的文本内容当作XPath表达式执行,直接返回节点A的文本值test1。

2. XPath 1.0版本(无原生动态执行支持)

XPath 1.0本身没有内置的动态执行函数,需要借助宿主语言(比如Python、Java、C#等)分两步实现:

  • 第一步:用XPath取出节点B的文本内容(即A/text());
  • 第二步:把这个字符串作为新的XPath表达式,再次执行以获取节点A的值。

举个Python的简单示例(基于lxml库):

from lxml import etree

xml_content = """<?xml version="1.0" encoding="utf-8"?>
<Example>
    <A>test1</A>
    <B>A/text()</B>
</Example>"""

tree = etree.fromstring(xml_content)
# 获取节点B中的XPath表达式
xpath_expr = tree.xpath("B/text()")[0]
# 执行该表达式
result = tree.xpath(xpath_expr)
print(result)  # 输出: ['test1']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:32:02