Мне нужно проанализировать список определений HTML, как показано ниже:
<dl>
<dt>stuff</dt>
<dd>junk</dd>
<dd>things</dd>
<dd>whatnot</dd>
<dt>colors</dt>
<dd>red</dd>
<dd>green</dd>
<dd>blue</dd>
</dl>
Так что я могу получить ассоциативный массив, подобный этому:
[definition list] =>
[stuff] =>
[0] => junk
[1] => things
[2] => whatnot
[colors] =>
[0] => red
[1] => green
[2] => blue
Я использую DOMDocument -> loadHTML()
для импорта строки HTML в объект, а затем simplexml_import_dom()
для использования расширений simplexml, в частности xpath
.
У меня проблема с синтаксисом XPath для запроса всех элементов <dd>
, которые являются последовательными и не разбиваются <dt>
.
Поскольку элементы <dd>
не считаются дочерними элементами <dt>
, я не могу просто выполнить цикл по всем запросам dt
и запросить по всем dd
с.
Так что я думаю, что мне нужно сделать запрос для первого dd
брата каждого dt
, а затем для всех dd
братьев и сестер этого первого dd
.
Но из учебников по XPath мне не ясно, возможно ли это. Можете ли вы сказать «последовательные совпадения братьев и сестер»? Или я вынужден проходить через каждого потомка оригинального dl
и перемещаться по любым dt
s и dd
, когда они появляются?