« prototype.jsの使い方 | トップページ | XML_Serializerを使ってみよう2 »

2006年11月16日

XML_Serializerを使ってみよう1

ここ数年の間に大手の企業からもWEBサービスの提供が増えてきました。
Amazon WEBサービス(英語)」を筆頭に、Yahoo!デベロッパーネットワークや価格.com・じゃらん・Weather Hacks(livedoor天気情報)等、様々なサービスがあります。
情報の取得手段として2種類(REST・SORP)ありますが、現在普及しているのは「REST」と呼ばれる通信手段が主流のようです。
RESTとは、WEBサービスを行っている各サイトにHTTP通信を使ってアクセスを行うとXML形式のデータを取得して、そのXMLのデータを使って各ユーザーが自分のサイトで自由に使うと言うものです。(ただし、データの改ざん等は禁止されていることが多いです)
これらのサービスを使うときにXML解析のプログラムを作ることになりますが、今回はXML解析に役立ちそうなPEAR::XML_Serializerを紹介します。
紹介前に下記のサーバーからPEAR::XML_Serializerをセッティングしておいてください。
PEAR::XML_Serializerは2006年11月16日時点で、バージョンが0.18.0 (beta)の為、正常に動作しないこともあるかと思いますのでご注意下さい。

・PEAR::XML_Serializerダウンロード
PEAR::XML_Serializer
・インストールに関しては下記をご覧下さい
レンタルサーバーでPEARを使う方法

使い方を覚えて頂く為に、シンプルなXMLを準備してそれを読み込ませてみます。

今回、準備したテスト用のXMLは下記の通りです。
my.xml

<?xml version="1.0" encoding="UTF-8"?>
<myxml>
  <myName>ピヨヒコ</myName>
  <myAge>25</myAge>
</myxml>

早速、XMLを読み込みスクリプトの製作を始めます。
はじめにXML_Unserializer.phpを読み込みます。

require_once("XML/Unserializer.php");

次に、パラメータを準備した後にXML_Unserializerの宣言をします。

$param = array(
  'complexType' => "object",
);
$xml = new XML_Unserializer($param);

$paramというハッシュを準備して、それをXML_Unserializer宣言の引数にセットしています。
$paramの「complexType」は、"object"と"array"の2種類があり、"object"をセットすると読み込んだXMLをオブジェクトとして扱うことができます。"array"をセットした場合は、XMLを配列(ハッシュ)として扱うことができます。
今回は、objectで使ってみます。

今度は、XMLを読み込みます。

$xml->unserialize("my.xml", TRUE);

第一引数には、ファイルパスを記述しています。
第一引数は、HTTP通信のアクセスでも可能です。ただし、相手サーバーから拒否された場合は読み込み出来ません。(「.htaccess」での制限がかかってたり、サーバーが落ちている場合等)
第二引数には、第一引数がファイルパスの場合「TRUE」、XMLを直接記述した場合には「FALSE」を指定するか何も指定しません。

最後に

var_dump($xml->getUnserializedData());

と、記述してXMLがオブジェクト化されていることが確認できます。

スクリプトを1つにまとめると

require_once("XML/Unserializer.php");

// XMLを読み込む
$param = array(
  'complexType' => "object",
);

$xml = new XML_Unserializer($param);
$xml->unserialize("my.xml", TRUE);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php var_dump($xml->getUnserializedData()); ?>
</body>
</html>


このようになります。

スクリプトの実行例

今回は、PEAR::XML_SerializerのUnserializer(XML読み込みプログラム)をご紹介させていただきました。
次回は、XMLを書き出すSerializerをご紹介させて頂きます。

XML_Serializerを使ってみよう2を見る

また、PEAR::XML_Serializerのご紹介にあたり下記の「PEAR入門 PHP標準ライブラリを極める!」を参考にさせて頂きました。
PEARのインストール方法や基本的なPEARの使い方について書かれています。細かい部分まで記述してありますので参考になると思います。
Product image for ASIN: 4798109592PEAR入門 PHP標準ライブラリを極める!

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/6

コメントを投稿

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