PHP: выбор содержимого с html-страницы с помощью xpath ()

Я пытаюсь получить содержимое div в html-странице, используя xpath и domdocument. Это структура страницы:

<div id="content"> <div class="div1"></div> <span class="span1></span> <p></p> <p></p> <p></p> <p></p> <p></p> <div class="div2"></div> </div> 

Я хочу получить только содержимое p, а не промежутки и div. Я пришел через это выражение xpath .//*[@id='content']/p, но думаю, что что-то не так, потому что я получаю только первый p. Пробовал использовать другое выражение со следующими словами: sibling и node (), но все возвращают только первый p.

 .//*[@id='content']/span/following-sibling::p .//*[@id='content']/node()[self::p] 

Вот как используется xpath:

 $domDocument=new DOMDocument(); $domDocument->encoding = 'UFT8'; $domDocument->loadHTML($page); $domXPath = new DOMXPath($domDocument); $domNodeList = $domXPath->query($this->xpath); $content = $this->GetHTMLFromDom($domNodeList); 

И вот как я получаю html от узлов:

 private function GetHTMLFromDom($domNodeList){ $domDocument = new DOMDocument(); $node = $domNodeList->item(0); foreach($node->childNodes as $childNode) $domDocument->appendChild($domDocument->importNode($childNode, true)); return $domDocument->saveHTML(); } 

Solutions Collecting From Web of "PHP: выбор содержимого с html-страницы с помощью xpath ()"

Это выражение XPath:

 //div[@id='content']/p 

Результат в наборе требуемых узлов (пять элементов p )

EDIT : Теперь понятно, в чем проблема. Вам нужно перебирать NodeList:

 private function GetHTMLFromDom($domNodeList){ $domDocument = new DOMDocument(); foreach ($nodelist as $node) { $domDocument->appendChild($domDocument->importNode($node, true)); } return $domDocument->saveHTML(); }