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

如何使用XPath选择XML中仅含属性无类的div元素?

搞定这个XPath选择问题!

嘿,我明白你现在的困扰了——要选中这个没有class、只有特殊attrs属性的div确实容易在引号上卡壳。我来给你一步步拆解正确的表达式:

首先看你给出的示例div结构:<div attrs="{'invisible': [('state', '!=', 'recruit')]}">...</div>,核心是要精确匹配attrs属性的完整值,这里的关键是处理XPath里的引号冲突问题:

1. 精确匹配的XPath表达式

如果你的XML里attrs属性是用双引号包裹值的(就像你示例里那样),直接用下面的表达式就行:

//div[@attrs="{'invisible': [('state', '!=', 'recruit')]}"]

要是XML里attrs属性是用单引号包裹值的(比如<div attrs='{'invisible': [('state', '!=', 'recruit')]}'>),这时候要把属性值里的单引号转成两个连续单引号(XPath里的单引号转义规则),表达式变成:

//div[@attrs='{''invisible'': [(''state'', ''!='', ''recruit'')]}']

2. 模糊匹配(如果不需要完全精确)

要是你只需要选中attrs里包含invisible、state、!=和recruit这些关键词的div,可以用contains()函数来放宽匹配条件,避免引号转义的麻烦:

//div[contains(@attrs, 'invisible') and contains(@attrs, 'state') and contains(@attrs, '!=') and contains(@attrs, 'recruit')]

不过要注意,这种方式可能会误匹配其他结构相似的div,所以能精确匹配的话优先用第一种。

额外小提示

如果你的attrs属性值实际是标准JSON格式(比如用双引号代替单引号:{"invisible": [["state", "!=", "recruit"]]}),那表达式要对应调整引号,比如:

//div[@attrs='{"invisible": [["state", "!=", "recruit"]]}']

这样应该就能精准选中你要替换的div啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:48