我有一个HTML页面,想要从HEAD
中提取一些属性,从BODY
中提取内容。从HEAD
中提取属性的工作正常 - 但BODY
的内容格式错误。
这是来自文件的HTML:
<ul>
<li>test1</li>
<li>test2</li>
</ul>
这是C14N()
(以及DOMDocument::saveXML()
)的结果:
<ul><li>test1</li>
<li>test2</li>
</ul>
我也试过DOMDocument::saveHTML()
:
<ul>
<li>test1</li>
<li>test2</li>
</ul>
Imho HTML加载出错了。这就是我目前构建DOM的方式:
$doc = new DOMDocument("1.0", "UTF-8");
$doc->preserveWhiteSpace = true;
$doc->formatOutput = true;
$html = file_get_contents($path);
if ($doc->loadHTML($html)) {
$xpath = new DOMXPath($doc);
$bodyNode = $xpath->query("/html/body");
$this->content = $doc->saveXML($bodyNode->item(0));
}
在$html
中,格式正确无误。 preserveWhiteSpace
和formatOutput
没有任何影响。
拥有正确的空格并不重要 - 但它使代码更易于阅读。
如何使用正确的空格从DOMNode
(由DOMXPath::query()
返回)获取innerHTML?
感谢。
使用PHP Version 7.0.29,DOM / XML API Version 20031129和libxml Version 2.9.1。