0

我正在使用 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 文件应该只有 1 个根节点,但问题是当我读取 xml 文件时,有时我会得到具有多个根节点的文件。 我只想知道有没有办法读取具有多个根节点的 xml 文件。

这是我可以在xml文件中读取多个父标签的任何其他方式吗

4

1 回答 1

0

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

但是,除非您可以确定 XML 文件将永远保持很小,否则您尝试做的事情也可能是个坏主意。PHP 中的大而深的数组很快就会变得非常慢。让我建议改为学习 XPath,它是一种用于在 XML 文档中搜索内容的“子语言”。XML 处理通常会比较缓慢和繁重,但是大而深的 PHP 数组可能会变得非常慢,无论您​​如何处理它们。

希望能帮助到你!

于 2012-07-04T10:01:57.153 回答