我试图通过其先前的文本获得<p>
元素。例子:
<div>
Header:
<p>ITEM</p>
ID:
<p>123</p>
Title:
<p>Test</p>
</div>
,我想捕获& 123"。我已经尝试了几个组合的前例-兄弟姐妹,但还没有能够得到它。
.//p[preceding-sibling::node()[1][self::text()][.='ID:']]
.//p[preceding-sibling::text()='ID:']
我不能控制HTML,他们也不想改变它。我总是会在我想要捕捉的段落之前知道文本。这可能吗?
编辑:增加更多的例子。要抓取的元素并不总是要查找的第一个/最后一个元素。
这个XPath,
//p[preceding-sibling::node()[1][normalize-space()='ID:']
将选择所有紧接在前面的兄弟元素具有空间规范化字符串值ID:
的p
元素。
指出:
- 您的第一次尝试接近,但未能解释
ID:
周围的空白。 - 您的第二次尝试又没有考虑到立即性约束。
此XPath
在包含ID
的节点后给出123
文本:
(//div[contains(text(), "ID:")]/p)[1]