我已经多次看到这个问题,并希望得到明确的答案。
给定 xml 中的这种结构:
<ByteListSet>
<Byte Order="0">14</Byte>
</ByteListSet>
我无法访问属性“订单”。var_dump(不出所料)不显示 ByteListSet 的任何属性。实际上,foreach 迭代不会产生 @attributes 项。
但是,以下结构:
<ByteListSet>
<Byte Order="0"><Value>3729</Value></Byte>
</ByteListSet>
正确地导致 ByteListSet 有一个子 Byte,它是一个具有 @attributes 的 SimpleXmlObject。
我会假设 SimpleXML 确实从第一个案例中获取了@attributes,但是它将它们保留在哪里?问题在于,在前一个结构中,ByteListSet 在 ->children() 的 var_dump 上生成:
object(SimpleXMLElement)[25]
public 'Byte' => string '14' (length=2)
如果我对它进行 get_object_vars() 和 var_dump ,我只会得到:
string '14' (length=2)
表明 Byte 不是作为 xml 对象返回给我,而是作为字符串返回;作为它上面的 ByteList 对象的属性。
Order="0" 在某处,但我无权访问它。我怎么去呢?注意: ->attributes() 如您所料,返回一个空白数组。
(我们不控制此架构,因此无法对其进行重组。)