当有1个或更多子节点时解析xml force数组结构

时间:2012-06-26 15:32:20

标签: php xml

我正在尝试解析一些具有以下结构的XML(显示的2个表单,都是有效的):

<xml-structure>
    <parent-group>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
    </parent-group>
</xml-structure>

<xml-structure>
    <parent-group>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
    </parent-group>
</xml-structure>

以下用于将整个结构转换为关联数组并查看数据:

$arr = json_decode(json_encode((array) simplexml_load_string($xml)),1);
$children = $arr['parent-group']['child'];

我想迭代孩子来查看数据 - 但是,只有当有多个孩子时,以下内容才有效:

foreach($children as $child) {
    echo $child['element1'];
}

如果只有一个孩子,那么这不起作用,因为以下是真的:

$children === {'element1' => 'Some Data', 'element2' => 'Some Data'}

如果不事先知道是否有多个孩子,我怎样才能确保$children永远是一个数组(可能是1号)?

1 个答案:

答案 0 :(得分:0)

我最终做了以下事情 - 如果有人有更好的解决方案,我会感兴趣:

$children = $arr['parent-group']['child'];
if (!empty($children['element1'])) {
    $children = array($children);
}

完成此操作后,$children将始终是一个子数组,允许以下行正确执行。