本当にシンプルで簡単な解決策を使用してXMLファイルを配列に変換する必要があります。この1は私に良い探していた。一貫性のないXML解析
json_decode(json_encode(simplexml_load_string($xmlContent, "SimpleXMLElement", LIBXML_NOCDATA)), true);
これに伴う問題は、それが子供一人当たりの連想配列からなるインデックス付き配列として複数の子を扱いますが、それは親タグで唯一の子供がいた場合、それはdoesnのことです1つの要素でインデックス配列を作成し、assoc配列を直接親タグ要素に配置します。これらのシナリオの出力が一貫している必要があります。私。最初にインデックスされた配列は、子の数量に依存しません。私の目的は、解析後の一貫したスキーマです。
複数の子の例:
入力:
<PICK_NOTE_LINES>
<LINE>
<PICK_LINE_NUM>1</PICK_LINE_NUM>
<PRODUCT_CODE>3342</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
<LINE>
<PICK_LINE_NUM>2</PICK_LINE_NUM>
<PRODUCT_CODE>5285</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
</PICK_NOTE_LINES>
出力(LINEの親要素でインデックス付きの配列をしています):
['PICK_NOTE_LINES'=>['LINE'=>[['PICK_LINE_NUM'=>1, ...],['PICK_LINE_NUM'=>2, ...]]]
1子の例:
<PICK_NOTE_LINES>
<LINE>
<PICK_LINE_NUM>1</PICK_LINE_NUM>
<PRODUCT_CODE>3342</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
</PICK_NOTE_LINES>
出力(ライン親要素で連想配列):
['PICK_NOTE_LINES'=> ['LINE'=>['PICK_LINE_NUM'=>1, ...]]]
が、それは常にそれが唯一の子供の場合でも、インデックス付きの配列に子供を入れて取得することが可能ですか?それが不可能な場合は、一貫した出力を得るために何が使えますか?
明らかに、現在のコードでは不可能です。 –
@u_mulderおそらくそれを可能にするパーサーオプションがいくつかあると思いました。 – Sergey