我尝试使用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文档,我做错了什么?
我也尝试过PHP解析器,但是由于它不是一个实际的XML文档,它会因为一个无效的XML而产生错误。因此,我更喜欢把它当作HTML文档来处理。
发布于 2018-12-26 22:53:54
你在找loadXML,而不是loadHTML。
不需要用HTML标记包围一切,只需添加一个虚拟的<root>项,因为任何有效的XML都必须有一个(您也可以将它添加到$xml变量本身)。
此外,在99%的情况下,应该避免在函数调用之前使用@,它会阻止您看到/理解错误的地方。
下列各方应这样做:
$doc->loadXML('<root>' . $xml . '</root>');演示这里: https://3v4l.org/s8QvM
https://stackoverflow.com/questions/53937968
复制相似问题