在cakephp中将xml数据转换为数组

时间:2012-07-04 07:02:03

标签: php xml cakephp cakephp-1.3

我正在使用cakephp的预定义函数XML组件。我想要做的是,将xml文件数据转换为数组以进行处理。我的代码是这样的:

App::import('Helper', 'Xml');
$xml = new XmlHelper();
$xml_data = & new XML($filePath);
$array = Set::reverse($xml_data);

如果我的xml文件包含以下格式的数据,则此代码可以正常工作:

<parent>
  <tag ...../>
  <tag ...../>
</parent>

其中是根节点。

,即所有标签都在单个父标签内。

但是当数据分布在几个不同的父标签中时会出现问题,即:

<parent>
  <tag ...../>
</parent>
<parent>
  <tag ...../>
</parent>

在这种情况下,只有第一个父标记的数据在输出数组中给出。 我知道一个xml文件应该只有一个根节点,但问题是,当我正在读取一个xml文件时,有时我会得到具有多个根节点的文件。 我只想知道是否有任何方法可以读取具有多个根节点的xml文件。

这是否可以使用其他方式在xml文件中读取多个父标记

1 个答案:

答案 0 :(得分:0)

这些父元素是XML文档的根目录吗?这很重要,因为XML只允许一个根节点。在根节点下,您可以拥有任意数量的元素。从您的问题中不清楚&lt; parent&gt; s是根节点还是根节点的子节点。

但是,除非您确定XML文件将永远保持非常小,否则您尝试做的事情也可能是一个坏主意。 PHP中的大型深层数组很快就会变得很慢。让我建议学习XPath,这是一种在XML文档中搜索事物的“子语言”。一般来说,XML处理往往有些缓慢和沉重,但无论你如何处理它们,大型深度PHP数组都会变得非常慢。

希望它有所帮助!