在PHP DOMNode的InnerHTML

时间:2018-03-31 13:26:21

标签: php whitespace domdocument

我有一个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中,格式正确无误。 preserveWhiteSpaceformatOutput没有任何影响。

拥有正确的空格并不重要 - 但它使代码更易于阅读。

如何使用正确的空格从DOMNode(由DOMXPath::query()返回)获取innerHTML?

感谢。

使用PHP Version 7.0.29,DOM / XML API Version 20031129和libxml Version 2.9.1。

0 个答案:

没有答案