用PHP-DOMDocument解析类XML文档
我试着用用PHP-DOMDocument解析类XML文档,php,xml,dom,domdocument,Php,Xml,Dom,Domdocument,我试着用PHPDOMDocument解析EPUB索引的类似XML的结构 $doc = new DOMDocument(); $xml = ' <navPoint playOrder="1" id="np-1"> <navLabel> <text>I</text> </navLabel> <content src="/1.html"/>
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);
我做错了什么,它没有将其解析为一个简单的HTML文档
另外,我也尝试了PHP XML解析器,但由于它不是一个实际的XML文档,它会因为一个无效的XML而出现错误。因此,我更喜欢将其视为HTML文档。您正在寻找的,而不是加载HTML
不需要用HTML标记包围所有内容,只需添加一个虚拟的
项即可,因为任何有效的XML文档都必须有一个项目(您也可以将其添加到$XML
变量本身)
此外,在99%的情况下,应该避免在函数调用之前使用@
,这样可以防止您看到/理解错误
应采取以下措施:
$doc->loadXML('<root>' . $xml . '</root>');
$doc->loadXML('.$xml'');
此处演示:您要查找的不是加载HTML
不需要用HTML标记包围所有内容,只需添加一个虚拟的
项即可,因为任何有效的XML文档都必须有一个项目(您也可以将其添加到$XML
变量本身)
此外,在99%的情况下,应该避免在函数调用之前使用@
,这样可以防止您看到/理解错误
应采取以下措施:
$doc->loadXML('<root>' . $xml . '</root>');
$doc->loadXML('.$xml'');
此处演示:HTML不区分大小写,但XML不区分大小写。这就是loadHTML()将所有标记转换为小写的原因。您的呼叫将不匹配。@记住这一点很好。非常感谢。HTML不区分大小写,但XML不区分大小写。这就是loadHTML()将所有标记转换为小写的原因。您的呼叫将不匹配。@记住这一点很好。非常感谢。