PHPでのXMLファイルの読込み
PHPでXMLファイルを読込む場合、以下の関数を利用できます。
- file_get_contents - ファイルの内容を全て文字列に読込む
- xml_parse_into_struct - XMLデータを配列構造体に格納する
サンプルとして以下のファイルsimple.xmlを読むことにします。
<?xml version="1.0" encoding="UTF-8"?> <books> <book> <title>AJAXの秘密</title> <author>あいう</author> </book> <book> <title>PHPのオブジェクト</title> <author>けけけ</author> </book> <book> <title>入門Linux</title> <author>リーナス</author> </book> </books>
処理するPHPコードは以下のものです。
<?php
// XMLファイルの読込み
$content=file_get_contents('simple.xml');
// XMLデータを配列に格納
$xml_parser=xml_parser_create();
xml_parse_into_struct($xml_parser,$content,$vals);
xml_parser_free($xml_parser);
print_r($vals);
?>
print_rで配列をダンプした結果は以下のようになります。(一部のみ)
[2] => Array
(
[tag] => TITLE
[type] => complete
[level] => 3
[value] => AJAXの秘密
)
[3] => Array
(
[tag] => BOOK
[value] =>
[type] => cdata
[level] => 2
)
[4] => Array
(
[tag] => AUTHOR
[type] => complete
[level] => 3
[value] => あいう
)
なんだか難しそうですが、配列が更に配列になっており、そのインデックスにtag,type,level, valueなどがあることが分かります。
ちなみに、Windowsのコマンドプロンプトでこのプログラムを実行すると日本語が文字化けします。これはXMLの処理がUTF-8で行われるためです。print_rでの出力を止めて、mb_convert_encodingでSJISに変換してから出力すれば解決します。