我尝试使用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文档。
答案 0 :(得分:2)
您要查找的是loadXML
,而不是loadHTML
。
不需要用HTML标记括起所有内容,只需添加一个伪<root>
项目,因为任何有效的XML文档都必须有一个(您也可以将其添加到$xml
变量本身中)。 / p>
另外,在99%的情况下,应避免在函数调用前使用@
,这样可以防止您发现/了解问题所在。
请执行以下操作:
$doc->loadXML('<root>' . $xml . '</root>');