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」?>>>
トム・バトラー&ケビン・ヤンク
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コンテンツからデータを解析する方法を簡単に知ることができます。