phpDom XPath для получения самостоятельного html-контента?

#html #xpath #element #domdocument

Вопрос:

Скажем, внутри StudentList.html получил эти данные


 <div class="tableHeader">
<div class="header">
<div class="header-item">Name</div>
<div class="header-item">ID</div>
<div class="header-item">Email</div>
</div>

<div class="studentRow"></div>
 

Затем я выполняю:

 $dom = new DomDocument('1.0', 'UTF-8');
$str = file_get_contents("StudentList.html");
if ($dom->loadHTML(mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')) == true) {
    $xpath = new DomXPath($dom);
    $nodeList = $xpath->query("//div[@class='tableHeader']");
    $node = $nodeList->item(0);
    echo "<p>" . $node->nodeValue . "</p>";     
}
 

но вышеописанный метод заключается в том, чтобы получить значение только внутри, а не то, что я хочу…

Что я хочу, так это получить полный блок html-контента, когда этот блок класса соответствует.

поэтому он должен возвращать содержимое ниже, когда я выполняю эхо

 <div class="tableHeader">
<div class="header">
<div class="header-item">Name</div>
<div class="header-item">ID</div>
<div class="header-item">Email</div>
</div>
 

как-нибудь?

Комментарии:

1. только что найден ответ, saveXML-это ключ к получению полного содержимого html, включая его самого

Ответ №1:

Решение для получения полного html, включая self

 $xpath = new DomXPath($dom);
$div = $xpath->query("//div[@class='tableHeader']");
$div = $div->item(0);
$content= $dom->saveXML($div);
echo $content;