Работа с DOM
, который имеет один и тот же цикл HTML более 100 раз, который выглядит следующим образом
<div class="intro">
<div class="header">
<h1 class="product-code"> <span class="code">ZY001</span> <span class="intro">ZY001 Title/Intro</span> </h1>
</div>
<div>
<table>
<tbody>
<tr>
<td>Available</td>
<td> S </td>
<td> M </td>
<td> XL </td>
</tr>
Я ранее использовал этот запрос XPath, чтобы вернуть ВСЕ значения узла (все 100+ экземпляров)запроса DOM в связи с узлами переменных, которые могут содержать в Available
//div[@class='intro']/div/table/tbody/tr/td[contains(text(),'Available')]/following-sibling::td
объект (DOMNodeList) [595] public 'length' => int 591
Теперь мне нужно нацелиться на product-code
/ code
специально, чтобы получить все атрибуты td
для определенного code
, поскольку div, который содержит уникальный идентификатор (в примеревыше, ZY001
) не является прямым предком, я думаю, что я должен сделать обратный XPath-запрос
Вот одна из моих попыток:
//h1[@class='product-code']/span[contains(@class, 'code') and text() = 'ZY001']/../../div[@class='intro']/div/table/tbody/tr/td[contains(text(),'Available')]/following-sibling::td
Как я определяю /span[contains(@class, 'code') and text() = 'ZY001']
и затем дважды пытался пройти через дом, используя /../../
Я надеялся / ожидал вернуть div [@ class = 'intro'] с текстом ZY001
непосредственно над ним, или, скорее, public 'length' => int 1
Но все мои попытки до сих пор привели меняn 0
результаты.Не false
, что указывает на неправильный XPath, но 0
.
Как я могу изменить мой XPath Query, чтобы получить единственный экземпляр в одном из множества <div class="intro">
, которые содержат <h1 class="product-code">
/ <span class="code">
текстовое значение ZY001
?