Я пытаюсь извлечь содержимое 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, а не span и div.Я пришел через это выражение xpath . // * [@ id = 'content'] / p , но думаю, что-то не так, потому что я получаю только первый p.Попытался использовать другое выражение с follow-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();
}