使用PHP DOMDocument解析类似XML的文档

时间:2018-12-26 22:49:39

标签: php xml dom domdocument

我尝试使用PHP DOMDocument来解析EPUB索引的类似XML的结构

$doc = new DOMDocument();
$xml = '
      <navPoint playOrder="1" id="np-1">
        <navLabel>
          <text>I</text>
        </navLabel>
        <content src="/1.html"/>
      </navPoint>
      <navPoint playOrder="2" id="np-2">
        <navLabel>
          <text>II</text>
        </navLabel>
        <content src="/2.html"/>
      </navPoint>
';

@$doc->loadHTML('<?xml encoding="utf-8" ?>
<html><head></head><body>' . $xml . '</body></html>');

$output = $doc->getElementsByTagName('navPoint');

print_r($output);

但返回

DOMNodeList Object
(
    [length] => 0
)

我没有做错什么,因为它没有将其解析为简单的HTML文档?

P.S。我也尝试过PHP XML解析器,但是由于它不是实际的XML文档,因此由于XML无效而产生错误。因此,我更喜欢将其视为HTML文档。

1 个答案:

答案 0 :(得分:2)

您要查找的是loadXML,而不是loadHTML

不需要用HTML标记括起所有内容,只需添加一个伪<root>项目,因为任何有效的XML文档都必须有一个(您也可以将其添加到$xml变量本身中)。 / p>

另外,在99%的情况下,应避免在函数调用前使用@,这样可以防止您发现/了解问题所在。

请执行以下操作:

$doc->loadXML('<root>' . $xml . '</root>');

此处演示:https://3v4l.org/s8QvM

相关问题