PHPでXMLを連想配列に変換する

Convert Xml Associative Array Php



XML(Extensible Markup Language)は、人間が読める形式でデータを格納するために使用されるマークアップ言語の一種です。他のマークアップ言語とは異なります。この言語のすべてのタグはユーザー定義です。データの保存にデータベースを使用したくない場合は、XMLを使用する方が少量のデータを保存するための優れたソリューションです。 XMLドキュメントのデータには、PHPスクリプトを使用して、任意のWebアプリケーションで簡単にアクセスして使用できます。このチュートリアルでは、XMLドキュメントを解析して連想配列に格納する方法を示します。

必要な機能

一部の組み込み関数は、XMLコンテンツを関連するPHP配列に変換するために使用されます。さまざまな機能の目的を以下に説明します。







file_get_contents():



この関数は、XMLデータを変換して文字列データを返します。 XMLファイル名を引数として取ります。



simplexml_load_string():





この関数は、XML文字列データを変換してXMLオブジェクトを返します。 XML文字列データを引数として取ります。

simplexml_load_file():



この関数は、XMLファイルの内容を変換してXMLオブジェクトを返します。 XMLファイル名を引数として取ります。

SimpleXMLElement():

XMLデータからXMLオブジェクトを作成するために使用されます。 XMLコンテンツ値を引数として取ります。

json_encode():

XMLオブジェクトを変換してJSONオブジェクトを返します。 XMLオブジェクト変数を引数として取ります。

json_decode():

JSONデータを変換することにより、連想PHP配列を返します。 JSONオブジェクト変数を引数として取ります。

XMLファイルを作成する

XMLデータを連想PHP配列に変換する方法を知るには、XMLファイルを作成するか、スクリプトでXMLデータを定義する必要があります。次の内容のcourses.xmlという名前のXMLファイルを作成し、PHPスクリプトがある場所に保存します。このファイルには、親要素の下に子要素が含まれています。したがって、次のXMLファイルをPHP配列に変換した後、2次元の連想配列が生成されます。

コース.xml

バージョン=「1.0」?>
>>
>>Webプログラミング>>
>>6ヵ月>>
>>
>>
>>PHPプログラミングの喜び>>
>>アランフォーブス>>
>>プラム島>>
>>
>>
>>PHP&MySQL初心者から忍者へ
トム・バトラー&ケビン・ヤンク
SitePoint


ヘッドファーストPHP&MySQL
リン・ベイグリー&マイケル・モリソン
オライリー


例-1:エラーをチェックせずにXMLファイルのコンテンツを連想配列に変換する

次のスクリプトは、file_get_contents()関数とsimplexml_load_string()関数を使用してXMLオブジェクトを作成する方法を示しています。ここでは、courses.xmlファイルが以前に作成された変換に使用されます。次に、json_encode()関数とjson_decode()関数を使用して、XMLファイルの内容を変換した後に連想配列を取得します。 XMLコンテンツにエラーが存在しない場合、次のスクリプトでエラーは表示されません。ここで、

 タグは、フォーマットされた方法で配列を印刷するために使用されます。



//既存のXMLファイルを定義します
$ xml = 'courses.xml';

// XMLファイルの全内容をXML文字列として読み取ります
$ xmlData = file_get_contents (($ xml)。;

// XML文字列データをXMLオブジェクトに変換します
$ xmlObject = simplexml_load_string (($ xmlData)。;

// XMLオブジェクトをJSONオブジェクトに変換します
$ jsonObject = json_encode (($ xmlObject)。;

// JSONオブジェクトを連想配列に変換します
$ assArray = json_decode (($ jsonObject NS)。;

//連想配列の構造を出力します
捨てた '

';  
print_r ($assArray);
echo '

'
;

?>

出力:

PHPスクリプトを実行すると、次の出力が表示されます。ここでは、XMLファイルcourses.xmlのコンテンツに基づいて2次元配列が生成されます。

例-2:チェックエラーを使用してXMLファイルのコンテンツを連想配列に変換する

XMLを連想配列に変換するときにエラーをチェックすることをお勧めします。エラーチェックがスクリプトに実装されている場合、コーダーがコードをデバッグするのに役立ちます。次のスクリプトは、エラー処理機能を備えたsimplexml_load_file()関数を使用して、XMLファイルのコンテンツを連想配列に変換する方法を示しています。 libxml_use_internal_errors()関数をTRUE値とともに使用して、エラー処理を有効にします。スクリプトで使用されるXMLファイルの内容にエラーが含まれている場合、simplexml_load_file()関数はfalseを返し、libxml_get_errors()関数を使用してエラーメッセージが出力されます。 XMLファイルにエラーが存在しない場合、ファイルの内容は2次元の連想配列に適切に変換されます。



//ユーザーエラー処理を有効にする
libxml_use_internal_errors ((NS)。;

// XMLオブジェクトを作成します
$ objXml = simplexml_load_file (('courses.xml')。;

// XMLオブジェクトがfalseを返した場合の印刷エラー
もしも (($ objXml === NS)。 {{
捨てた 'XMLファイルの解析中にエラーが発生しました。NS';
foreach(( libxml_get_errors (()。 なので $エラー)。 {{
捨てた $エラー->メッセージ;
}
出口 ;
}

// XMLオブジェクトをJSONオブジェクトに変換します
$ objJson = json_encode (($ objXml)。;
// JSONオブジェクトを連想配列に変換します
$ assarr = json_decode (($ objJson NS)。;

//連想配列の構造を出力します
捨てた '
';  
print_r ($assarr);
echo '
'
;

?>

出力:

PHPスクリプトを実行すると、次の出力が表示されます。ここでは、XMLファイルにエラーはありません。したがって、XMLファイルcourses.xmlのコンテンツに基づいて、前の例のように2次元配列が生成されました。

例-3:XMLコンテンツを連想配列に変換する

次のスクリプトは、SimpleXMLElement()関数を使用してXMLデータを連想配列に変換する方法を示しています。スクリプトでは、XMLコンテンツは、関数SimpleXMLElement()の引数として使用される$ xmlという名前の変数に格納されます。次に、json_encode()関数とjson_decode()関数を使用して、XMLファイルの内容を変換した後に連想配列を取得します。



// XML変数を定義します
$ xml = <<


[メール保護]

12 / A、ダンモンディ
ダッカ



[メール保護]

156、モチーフ
ダッカ



[メール保護]

21 / B、モグバザール
ダッカ



XML
;

// XMLオブジェクトを作成します
$ xmlObject = 新着SimpleXMLElement(($ xml)。;
// JSONオブジェクトを作成します
$ jsonObject = json_encode (($ xmlObject)。;
// JSONオブジェクトを連想配列に変換します
$ assArray = json_decode (($ jsonObject NS)。;

//連想配列の構造を出力します
捨てた '
';  
print_r ($assArray);
echo '
'
;

?>

出力:

PHPスクリプトを実行すると、次の出力が表示されます。ここでは、XML変数$ xmlの内容に基づいて2次元配列が生成されます。

結論:

このチュートリアルで示したように、XMLコンテンツを連想配列に変換する方法は3つありました。これにより、読者は、PHPスクリプトを使用して、XMLデータを操作し、XMLコンテンツからデータを解析する方法を簡単に知ることができます。