我有以下XML:
<fruits>
<fruit>
<name>apple</name>
<price>.99</price>
<per>pound</per>
</fruit>
<fruit>
<name>pear</name>
<price>1.99</price>
<per>pound</per>
</fruit>
<fruit>
<name>grapefruit</name>
<price>.99</price>
<per>each</per>
</fruit>
</fruits>
有几个结果,如示例中所示,print_r如下所示:
SimpleXMLElement Object
(
[fruit] => Array
(
[0] => SimpleXMLElement Object
(
[name] => apple
[price] => .99
[per] => pound
)
[1] => SimpleXMLElement Object
(
[name] => pear
[price] => 1.99
[per] => pound
)
[2] => SimpleXMLElement Object
(
[name] => grapefruit
[price] => .99
[per] => each
)
)
)
然而,如果我摆脱梨和葡萄柚,只留下苹果,我得到
SimpleXMLElement Object
(
[fruit] => SimpleXMLElement Object
(
[name] => apple
[price] => .99
[per] => pound
)
)
注意结构上的差异。在第一种情况下,&lt; fruit&gt;是一个SimpleXML对象的数组;在第二个,阵列消失了&lt; fruit&gt;只是一个对象。下游会产生问题,因为代码期望一组对象。
我试过把#34; apple&#34;将对象转换为数组并将其分配给&lt; fruit&gt;,但输出与第二个示例相同:如果只有一个子元素,则报告为元素,而不是数组。
我想我可以循环创建一个传统的数组并使用它,但是本地使用SimpleXML对象会很好。无论有多少个子节点,我都希望处理能够保持一致。