【问题标题】:Determine the order of XML elements in PHP确定 PHP 中 XML 元素的顺序
【发布时间】:2014-06-23 16:38:21
【问题描述】:

所以我有这个 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 元素顺序的另一种方法吗?

【问题讨论】:

    标签: php xml xml-parsing simplexml


    【解决方案1】:

    无论您在那里使用什么转储功能都会误导您(由于 SimpleXML 支持大量“魔法”,任何不是dedicated to the purpose 的功能都会误导您)。节点并没有被永久分离出来,它只是向您展示它们可以以这种方式访问​​。

    如果使用the children() method,无论标签名称如何,都会按照文档中定义的顺序获取:

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

    请注意,children() 实际上并不返回一个数组,而只是一个“可迭代”对象。因此,与真正的数组不同,相同的“键”可以在循环时多次出现。

    【讨论】:

    • 您可能会喜欢这个:stackoverflow.com/a/24373527/367456 - 关于您的回答,foreach (new SimpleXMLIterator($xmlTag-&gt;asXML()) as ... 也可以 :)(不是那么有用 ^^)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多