我正在使用SimpleXMLElement
来帮助我从字符串创建对象,
但面临一些问题:
如果xml字符串只有一个信息标记,它会将元素所属信息转换为object
<?xml version='1.0' encoding='utf-8'?>
<string>
<TotalRecords>1</TotalRecords>
<data>
<info>
<name>huge</name>
<age>27</age>
</info>
</data>
</string>
如果xml字符串有多个信息标记,将元素belogs信息转换为array
<?xml version='1.0' encoding='utf-8'?>
<string>
<TotalRecords>1</TotalRecords>
<data>
<info>
<name>huge</name>
<age>27</age>
</info>
<info>
<name>alex</name>
<age>27</age>
</info>
</data>
</string>
这可以解决所有情况array
吗?
还是有另一种php方法可以更完美地转换?
答案 0 :(得分:1)
SimpleXML永远不会将任何东西转换为数组,你刚刚被调试函数的输出误导了。
事实上,SimpleXML在这种情况下非常有用,并允许您选择是否:
<info>
元素并忽略其他任何元素(例如$name = (string)$xml->data->info->name;
)$first_name = (string)$xml->data->info[0]->name; $second_name = (string)$xml->data->info[1]->name;
)foreach ( $xml->data->info as $info ) { $this_name = (string)$info->name; }
)$info = $xml->data->info[0]; foreach ( $info->children() as $tag_name => $element ) { echo "$tag_name = ", (string)$element; }