评估XPATH选择器以获取P-和LI-TAG中的文本



为了基于关键字链接对列表,我需要获得尚未链接的文本,而不是脚本或手动排除的文本,以自动替换关键字(p))和列表项目(li) - - 用于Drupal的Alinks模块中。

我按以下方式修改了现有的XPath选择器,并希望在其上获得反馈,如果它有效或可能会提高:

//*[p or li]//text()[not(ancestor::a) and not(ancestor::script) and not(ancestor::*[@data-alink-ignore])]

XPATH旨在使用任何HTML5内容,也可以使用自闭合标签(不是构型XML) - 这就是模块设计的方式,并且效果很好。

为了选择pli元素的文本节点后代,而不是ascript元素的后代,您可以使用此XPath 1.0:

//*[self::p|self::li]
   //text()[
      not(ancestor::a|ancestor::script|ancestor::*[@data-alink-ignore])
   ]

您的xpath表达式无效。您在text()之前缺少/。因此有效的表达方式

//*[p or li]/text()[not(ancestor::a) and not(ancestor::script) and not(ancestor::*[@data-alink-ignore])]

但是没有XML源文件,就无法确定此表达式是否与您所需的节点匹配。

最新更新