Php 为什么要使用XML解析器?

Php 为什么要使用XML解析器?,php,xml,xml-parsing,Php,Xml,Xml Parsing,我是一个有点经验的PHP脚本编写者,但我只是热衷于解析XML和所有这些好东西 我似乎无法理解为什么要使用一个单独的XML解析器,而不只是使用explode函数,这似乎很简单。下面是我一直在做的事情(假设路径XML.php)中有一个有效的XML文件): $contents=file\u get\u contents(“xml.php”); $array1=分解(“,$contents”); $array2=爆炸(“,$array1[1]); $data=$array2[0]; 所以我的问题是,如

我是一个有点经验的PHP脚本编写者,但我只是热衷于解析XML和所有这些好东西

我似乎无法理解为什么要使用一个单独的XML解析器,而不只是使用
explode
函数,这似乎很简单。下面是我一直在做的事情(假设路径
XML.php
)中有一个有效的XML文件):

$contents=file\u get\u contents(“xml.php”);
$array1=分解(“,$contents”);
$array2=爆炸(“,$array1[1]);
$data=$array2[0];
所以我的问题是,如果您可以将值分割成数组并从该点提取数据,那么XML解析器的实际用途是什么

提前感谢!:)

XML解析器:

  • 句柄编码
  • 可能有xpath支持
  • 允许您轻松修改和保存XML;附加/删除子节点、添加/删除属性等
  • 不需要将整个文件加载到内存中(DOM解析器除外)
  • 了解名称空间

请原谅我没有详细说明,但对于初学者,请尝试解析

$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>';
$contents=”
..
...
元素]]>
';

用你的爆炸方法。完成后,我们可以继续做一些更棘手的事情;-)

如果
a_标记
具有属性,您将如何分解同一个文件

毕竟,
explode(“..
的工作方式与
explode(“..
的工作方式不同


XML解析器理解XML规范。Explode只能处理最简单的情况,在这种情况下很可能会失败。

简而言之,它的一致性。在XML广泛使用之前,有许多未记录的格式用于将信息保存在文件中。XML背后的动力之一是ate是一种定义良好的标准文档格式。有了这种定义良好的格式,就可以开发一套通用的解析工具,只要文档遵循上述定义良好的格式,这些工具就可以对文档进行一致的解析

在某些特定情况下,您的示例代码将起作用

...
<!-- 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>
...
。。。
标签的内容
...
...
标签的内容
...

您的解析代码可能会中断。使用正确定义的XML解析器编写的代码不会中断。

使用经验证的XML解析方法将使代码更易于维护和阅读。如果架构发生更改,它还将使代码更易于适应,并且可以更容易地确定错误条件。XPath和XSLT它们的存在是有原因的,它们是以合理、易读的方式处理XML数据的经验证的方法。我建议您在给定的情况下使用任何适用的方法。请记住,仅仅因为您认为您只为一个特定目的编写代码,您永远不知道一段编写良好的代码会演变成什么。

explode
是一种自我这个名字只属于游戏开发。
...
<!-- 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>
...