PHP5にはSimpleXMLという非常に便利な機能があります。XMLをオブジェクトに入れるだけで簡単にXMLの要素を取り出すことができます。
しかしレンタルサーバーによっては、いまだPHP4を提供しているところも数多く、XMLの扱いに頭を悩ませている人も多いのではないでしょうか?しかも提供されているAPIの多くはXML形式で返してきます。思わぬところでXMLを使わなければいけないシーンに出くわすこともあるでしょう。
そんな訳で、今日は便利なライブラリを紹介します。
PHP XML Libraryという名前で、下記のリンクからDownloadすることができます。
Keith Devens .com(PHP XML Library)
使い方は簡単!
<?php include('xml.php'); $file = file_get_contents($URL); $data = XML_unserialize($xml); ?>
includeで先ほどDownloadしたファイルを読み込み、XML_unserializeという関数にxmlファイル渡してあげれば$dataに配列に変換されたデータが格納されます。
ね、簡単でしょ。
環境によっては日本語が?????と変換されてしまうことがあります。その場合はxml.phpに修正を加えなければなりません。
function XML(){ $this->parser = &xml_parser_create(); xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false); xml_set_object(&$this->parser, &$this); xml_set_element_handler(&$this->parser, 'open','close'); xml_set_character_data_handler(&$this->parser, 'data'); }
この部分を下記のように書き換えます。
function XML(){ $this->parser = &xml_parser_create("UTF-8"); xml_parser_set_option(&$this->parser, XML_OPTION_CASE_FOLDING, false); xml_set_object(&$this->parser, &$this); xml_set_element_handler(&$this->parser, 'open','close'); xml_set_character_data_handler(&$this->parser, 'data'); }
実は書き換える場所は1カ所ですけどねw
$xml_parser_create("UTF-8");
の部分です。これで??????の部分も正しく表示されるようになります。