esq*_*qew 2 php xml xml-parsing
我是一个有点经验丰富的PHP脚本编写者,但我只是喜欢解析XML和所有好东西.
我explode似乎无法理解为什么人们会使用单独的XML解析器而不是仅仅使用该函数,这似乎同样简单.这是我一直在做的(假设路径上有一个有效的XML文件xml.php):
$contents = file_get_contents("xml.php");
$array1 = explode("<a_tag>", $contents);
$array2 = explode("</a_tag>", $array1[1]);
$data = $array2[0];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果您可以将值分离为数组并从该点提取数据,那么XML解析器的实际用途是什么?
提前致谢!:)
Vol*_*erK 14
请原谅我没有详细介绍,但初学者尝试解析
$contents = '<a xmlns="urn:something">
<a_tag>
<b>..</b>
<related>
<a_tag>...</a_tag>
</related>
</a_tag>
<foo:a_tag xmlns:foo="urn:something">
<![CDATA[This is another <a_tag> element]]>
</foo:a_tag>
</a>';
Run Code Online (Sandbox Code Playgroud)
用你的爆炸方法.当你完成后我们可以继续一些棘手的事情;-)
Ala*_*orm 10
简而言之,它的一致性.在XML广泛使用之前,有许多未记录的格式用于将信息保存在文件中.XML背后的动机之一是创建一个定义良好的标准文档格式.利用这种定义良好的格式,可以开发一套通用的解析工具,只要文档符合上述明确定义的格式,就可以在文档上一致地工作.
在某些特定情况下,您的示例代码将起作用.但是,如果文档发生变化
...
<!-- adding an attribute -->
<a_tag foo="bar">Contents of the Tag</a_tag>
...
...
<!-- adding a comment to the contents -->
<a_tag>Contents <!-- foobar --> of the Tag</a_tag>
...
Run Code Online (Sandbox Code Playgroud)
您的解析代码可能会破坏.使用正确定义的XML解析器编写的代码不会.
XML解析器:
如果a_tag有属性,你会如何爆炸同一个文件?
explode("<a_tag>" ...explode("<a_tag attr='value'>" ...毕竟会有不同的工作方式.
XML Parsers理解XML规范.爆炸只能处理最简单的情况,很可能在很多情况下失败.