确定PHP中XML元素的顺序

时间:2014-06-23 16:38:22

标签: php xml xml-parsing simplexml

所以我有这个xml

<xmlTag>
  <item>etc etc</item>
  <section>etc etc</section>
  <item>etc etc</item>
  <item>etc etc</item>
  <section>etc etc</section>
<xmlTag>

我希望按顺序处理,即处理第一个项目标签然后处理第二个标签然后处理第三个项目标签...等等

然而,当我使用simplexml_load_string()时,结果对象变为

$xmlTag = {SimpleXMLElement}[2]
    item = {array} [3]
    section = {array} [2]

因此它将项目标签和节标签分开,现在我无法确定商品标签和节标签之间的顺序....

任何人都知道在这种情况下找出xml元素顺序的另一种方法吗?

1 个答案:

答案 0 :(得分:1)

无论你使用哪种转储功能,都会产生误导(由于SimpleXML支持大量的#34;魔法&#34;而不是dedicated to the purpose)。节点尚未永久分离出来,只是向您显示他们可以以这种方式访问​​。

如果您使用the children() method,您将按照文档中定义的顺序获取它们,无论标记名称如何:

foreach ( $xmlTag->children() as $child_name => $child ) {
     echo $child_name, "\n";
}

请注意children()实际上并没有返回一个数组,只是一个&#34; iterable&#34;宾语。所以不像真正的数组,相同的&#34;键&#34;循环时可以多次出现。