SimpleXMLの使えないPHP4でXMLを簡単に処理する

 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");

の部分です。これで??????の部分も正しく表示されるようになります。

スポンサーリンク
レクタングル大




フォローする

スポンサーリンク
レクタングル大