私はこの問題を数回見ましたが、決定的な答えが欲しいです。
xmlでこの構造を考えると:
<ByteListSet>
<Byte Order="0">14</Byte>
</ByteListSet>
属性「order」にアクセスできません。var_dump(当然のことながら)はByteListSetの属性を表示しません。実際、foreachの反復では@attributesアイテムは生成されません。
ただし、次の構造:
<ByteListSet>
<Byte Order="0"><Value>3729</Value></Byte>
</ByteListSet>
@attributesを持つSimpleXmlObjectである子Byteを持つByteListSetで適切に結果が得られます。
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()は、ご想像のとおり、空白の配列を返します。
(このスキーマは制御されていないため、再構築できません。)