两页的唯一XPath

时间:2016-02-20 14:38:09

标签: html xml xpath

我有两个不同的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."

在第二个。

1 个答案:

答案 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.
根据要求