0

この関数 http://mysrc.blogspot.it/2007/02/php-xml-to-array-and-backwards.html を使用して、XMLを配列に解析しています。非常に素晴らしい機能。しかし、奇妙なことに、次の2つのxmlファイルがある場合:

<response>
<company prop1=1>
</company>
<company prop1=2>
</company>
</response>

<response>
<company prop1=1>
</company>
</response>

別の結果が得られました。最初のケースでは、2つの要素の配列を取得しました。

Array(
  int(0) => _a => Array(...)
  int(1) => _a => Array(...)
)

しかし、2番目のケースでは私は得ました

  Array (
    _a => Array(...)
  )

これは、最初のケースのようにインデックスを持つ配列ではありません。これにより、解析が複雑になります。誰かがコードを変更する方法を知っていますか?よろしく。

4

2 に答える 2

1

あなたが次のようなことをしたとしましょう

$result = xml2ary($xml);

xml2ary()を呼び出した後、次の行を追加してみてください。

$result = is_int(reset(array_keys($result))) ? $result : array($result);

これにより、結果配列の最初のキーが整数であるかどうかがチェックされます(つまり、xml2ary関数は複数の結果を返しました。そうでない場合は、変数をarray()で自動的にラップする$resultため、XMLが1つしかない場合でも同じ応答形式になります。アイテムが解析されます。

于 2012-10-29T10:37:11.850 に答える
0

PHPsimplexmlクラスを使用してみてください。

http://php.net/manual/en/book.simplexml.php

PHPでXMLを解析するための最良の方法です

于 2012-10-29T09:39:15.103 に答える