多くの Web アプリケーションでは、XML が一般的なデータ送信形式として広く使用されています。一般的な Web 開発言語として、PHP は当然 XML データを簡単に処理できる必要があります。 PHP では、XML データを配列に変換することは非常に一般的なニーズです。この記事では、PHPを使用してXMLデータを配列に変換する方法を説明します。
まず、XML データを配列に変換するには、PHP の組み込み関数である simplexml_load_string() を使用する必要があります。この関数は、XML 文字列を PHP にロードして解析し、SimpleXMLElement インスタンスを返します。 SimpleXMLElement は、XML データの処理に特に使用される PHP のクラスで、XML データを走査して操作するための便利なメソッドが多数含まれています。
次の XML データがあるとします:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>
simplexml_load_string() 関数を使用して、それを PHP にロードできます:
$xml = '<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>'; $xmlObj = simplexml_load_string($xml);
$xmlObj は SimpleXMLElement インスタンスです。そのメソッドを使用して、XML データを走査したり操作したりできます。ただし、特定のノードのフィルタリングや並べ替えなど、XML データをさらに処理する必要がある場合、SimpleXMLElement を使用するのは不便です。したがって、それを配列に変換する必要があります。
SimpleXMLElement を配列に変換するのは非常に簡単です。オブジェクトの前に (配列) キャストを追加するだけです:
$xmlArr = (array) $xmlObj; print_r($xmlArr);
上記のコードは次の結果を出力します:
Array ( [book] => Array ( [0] => Array ( [@attributes] => Array ( [category] => children ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => Harry Potter ) [author] => J.K. Rowling [price] => 29.99 ) [1] => Array ( [@attributes] => Array ( [category] => fiction ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => The Hunger Games ) [author] => Suzanne Collins [price] => 22.99 ) ) )
Asご覧のとおり、各ノードが連想配列に変換された 2 次元配列が得られます。 XMLデータ内に同名のノードが複数ある場合は配列に変換されます(例:ここにある2冊の本はbookの配列に変換されます)。
変換された配列では、各ノードに @attributes という名前のキーがあり、これはノードの属性に対応することに注意してください。たとえば、book ノードには category 属性があり、その値は @attributes['category'] キーの値に変換されます。
さらに、SimpleXMLElement は再帰構造であるため、ネストされた子ノードが多数含まれています。したがって、変換された配列も再帰構造になり、各サブ配列が子ノードに対応します。
もちろん、CDATA ノードや空のノードなど、特別な処理を必要とする特別なノードが XML データ内にある場合は、それらを処理するためにいくつかの特別なメソッドを使用する必要があります。ただし、通常の XML データの場合、simplexml_load_string() と (array) キャストを使用すると、XML データを配列に変換するのに十分便利です。
以上がPHPでXMLを配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。