Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP-DOMDocument解析类XML文档_Php_Xml_Dom_Domdocument - Fatal编程技术网

用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()将所有标记转换为小写的原因。您的呼叫将不匹配。@记住这一点很好。非常感谢。