Php Xpath – Как получить две информации в дочернем узле

Как получить следующую информацию в xpath?

Текст 01 – link_1.com

Текст 02 – link_2.com

$page = ' <div class="news"> <div class="content"> <div> <span class="title">Text 01</span> <span class="link">link_1.com</span> </div> </div> <div class="content"> <div> <span class="title">Text 02</span> <span class="link">link_2.com</span> </div> </div> </div>'; @$this->dom->loadHTML($page); $xpath = new DOMXPath($this->dom); // perform step #1 $childElements = $xpath->query("//*[@class='content']"); $lista = ''; foreach ($childElements as $child) { // perform step #2 $textChildren = $xpath->query("//*[@class='title']", $child); foreach ($textChildren as $n) { echo $n->nodeValue.'<br>'; } $linkChildren = $xpath->query("//*[@class='link']", $child); foreach ($linkChildren as $n) { echo $n->nodeValue.'<br>'; } } 

Мой результат возвращается

Текст 01

Текст 02

link_1.com

link_2.com

Текст 01

Текст 02

link_1.com

link_2.com

Замените // descendant:: во втором и третьем xpath, потому что // сообщает xpath искать этот элемент evrywhere в xml, а не в определенном узле (по мере необходимости), а $ child НЕ является отдельным XML. descendat:: означает любой дочерний узел

 @$this->dom->loadHTML($page); $xpath = new DOMXPath($this->dom); // perform step #1 $childElements = $xpath->query("//*[@class='content']"); $lista = ''; foreach ($childElements as $child) { // perform step #2 $textChildren = $xpath->query("descendant::*[@class='title']", $child); foreach ($textChildren as $n) { echo $n->nodeValue.'<br>'; } $linkChildren = $xpath->query("descendant::*[@class='link']", $child); foreach ($linkChildren as $n) { echo $n->nodeValue.'<br>'; } }