//div/following-sibling::p[preceding::div]
должен получить вас все p (a,b,c,d, e,f,g,h
) Если div содержит в себе различный текст, вы можете добавить некоторые условия. Например, получение только a, b, c, d в приведенном ниже примере будет: //div[text()='a']/following-sibling::p[preceding::div]
Если у вас есть класс, категория или что-то еще, что может отличить div (например, класс в примере): //div[@class='peach']/following-sibling::p[preceding::div]
<div>
<div class='peach'>a</div>
<p>a</p>
<p>b</p>
<p>c</p>
<p>d</p>
<div id='abc_123132' >b</div>
<p>e</p>
<p>f</p>
<p>g</p>
<p>h</p>
<div>c</div>
</div>
Последний пример: ваш код будет сгенерирован автоматически, и вы узнаете только часть некоторого атрибута для div. В приведенном выше примере, вы можете выбрать E, F, G, H, как это:
//div[contains(@id,'abc')]/following-sibling::p[preceding::div]
получает все родственный р, которые являются после DIV с идентификатором, который содержит «ABC» и предшествует другой DIV
если мои текущие node - это второй div, и я хочу, чтобы это не работало, потому что count (previous :: div) = 1 получает первый div, а не следующий div – zedouard