我正在尝试解析一些具有以下结构的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号)?
答案 0 :(得分:0)
我最终做了以下事情 - 如果有人有更好的解决方案,我会感兴趣:
$children = $arr['parent-group']['child'];
if (!empty($children['element1'])) {
$children = array($children);
}
完成此操作后,$children
将始终是一个子数组,允许以下行正确执行。