我有两个不同的HTML页面,其中包含:
<div class="test">
<ul>
<li><b>Part 1</b>Lorem ipsum dolor sit amet,</li>
<li><b>Part 2</b>consectetur adipisci elit,
<br> sed eiusmod tempor incidunt ut labore
<br> et dolore magna aliqua.</li>
</ul>
</div>
和
<div class="test">
<b>Part 1</b>Lorem ipsum dolor sit amet,
<br> <b>Part 2</b>consectetur adipisci elit,
<br> <b>Part 3</b>sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
</div>
我需要一个与之相关的唯一XPath,并且提取
"consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua."
在第一种情况下和
"sed eiusmod tempor incidunt ut labore et dolore magna aliqua."
在第二个。
答案 0 :(得分:1)
计划:选择包含以div
开头的文本节点子项的测试"Part"
下方的元素,然后选择以下所有文本节点的兄弟节点。
此XPath 1.0表达式,
/div[@class='test']//*[ starts-with(text(),'Part')
and not(following::*[starts-with(text(),'Part')])
]/following-sibling::text()
第1页的,已修复为格式良好,
<div class="test">
<ul>
<li><b>Part 1</b>Lorem ipsum dolor sit amet,</li>
<li><b>Part 2</b>consectetur adipisci elit,
<br/> sed eiusmod tempor incidunt ut labore
<br/> et dolore magna aliqua.</li>
</ul>
</div>
将选择多个文本节点,
consectetur adipisci elit,
sed eiusmod tempor incidunt ut labore
et dolore magna aliqua.
必须在XPath 1.0之外进行修剪/连接才能产生,
consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
,对于第2页,也已修复为格式良好,
<div class="test">
<b>Part 1</b>Lorem ipsum dolor sit amet,
<br/> <b>Part 2</b>consectetur adipisci elit,
<br/> <b>Part 3</b>sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
</div>
将选择
sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
根据要求。