« PHPによる動的スクリプト | メイン | XML配列構造体の処理 »

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に変換してから出力すれば解決します。

トラックバック

このエントリーのトラックバックURL:
http://www.yumemaro.com/apps/mt-tb.cgi/22

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)