[PHP] XMLを扱う
こんにちは、@yoheiMuneです。
今日はPHPでXMLを扱う方法を学びました(*゜▽゜)ノブログに残しておこっと。
XMLファイルを読み込む
XMLファイルを読み込むには、以下のように実装する。
$root = simplexml_load_file('data001.xml'); print_r($root);
simplexml_load_file関数にファイルパスを指定する事で、SimpleXMLElementというオブジェクトを受け取ることが出来ます。print_r関数を利用して、どんなオブジェクトを取得したかを出力しています。
SimpleXMLElementオブジェクトから値を取り出す。
以下のXMLから値を取り出します。
(XML)
<?xml version="1.0" encoding="utf-8"?> <datas> <data> <name>山田</name> <mail>yamada@aaa.com</mail> <tel>999-9999-9999</tel> </data> <data> <name>高橋</name> <mail>takahashi@aaa.com</mail> <tel>888-8888-8888</tel> </data> <data> <name>宮崎</name> <mail>miyazaki@aaa.com</mail> <tel>777-7777-7777</tel> </data> </datas>
(PHP)
foreach ($root->children() as $data) echo(mb_convert_encoding($data->name . "," . $data->mail . "," . $data->tel . "\n", 'utf-8', 'sjis'));
$rootから子要素のElementを$data変数にうけて、for文を回します。$dataからname, mail, telの要素を取り出すことで、XMLのデータをコンソールに出力しています。「mb_convert_encoding(文字列, 変換後文字コード, 返還前文字コード)」を利用して、XMLのデータ(UTF-8)を出力用のデータ(SHIFT-JIS)に変換することで、文字化けするのを防いでいます。
XMLにデータを追加する
SimpleXMLElementにデータを追加する場合には、以下のように実装します。
$obj = $root->addChild('data'); $obj->addChild('name', 'yoheiM'); $obj->addChild('mail', 'yoheiM@aaa.com'); $obj->addChild('tel', '555-5555-5555');
addChildにノード名を引数として指定して子要素(obj)を作成します。更にobjにname, mail, telの要素を追加します。
XMLを書き出す
SimpleXMLElementをファイルに書き出すには、以下のように実装すれば出来ます。
$root->asXML('data002.xml');
ファイル名を引数にasXML関数を実行することで、ファイルにXML要素が書き出されます。
最後に
今日のPHP学習も楽しかったなぁ。はやくPHPで色々なことが出来るようになりたい。作りたいサービスいっぱいあるし、サーバーは既に準備出来たし。あとは実装技術を向上させれば、色々とできるのかな♪(´ε` )全力疾走!!
関連ページ
運営しているサイトです。もし良ければご覧頂けると幸いです。
HTML5Learners:HTML5を学び合うFacebookPage
HTML5サンプルページ:作成したサンプルを載せているサイト
yoheim.NET:技術情報を中心に情報発信サイト