代码之家  ›  专栏  ›  技术社区  ›  Stark

当它到达带有XPath的特定类时,如何停止查询?

  •  3
  • Stark  · 技术社区  · 7 年前

    <div class="data">
        <h2 class="entry-contentH2">Preparation</h2>
        <h2>Airplanes</h2>
        <ul>
            <li><strong>3 large</strong> wings</li>
            <li><strong>2</strong>doors</li>
        </ul>
        <h2>Car</h2>
        <ul>
            <li><strong>4</strong> doors</li>
            <li><strong>1 cup</strong> holder</li>
        </ul>
        <h2 class="stopHeader">Execution</h2>
        <h2>Motorcycles</h2>
        <ul>
            <li>Easy to learn</li>
        </ul>
    </div>
    

    我正在尝试获取所有 <p></p> 标记后的文本 <h2>Preparing</h2> <p></p>

    这是我提出的代码:

    //h2[contains(.,"Preparation")]/following-sibling::h2/text()[not(preceding::h2[@class="stopHeader"])]
    
    #and also
    //h2[contains(.,"Preparation")]/following-sibling::h2/text()[not(preceding::h2[contains(., "Execution")])]
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Andersson    7 年前

    尝试以下XPath以获得所需的输出:

    //h2[.="Preparation"]/following-sibling::h2[./following-sibling::h2[.="Execution"]]/text()
    

    这应该返回每个标题的文本内容( h2 "Preparation" "Execution"

        2
  •  0
  •   Jainish Kapadia    7 年前

    试试这个xpath。

    //h2[text()='Preparation']/following::h2[not(@class='stopHeader')]/text()