rakutenApiはZend_Service_Amazonのようには解析できない

( diary )

そういえば、欲求不満で楽天のクラスを作成する時にZend_Service_Amazonと 同じ仕様にしようと考えていました。

具体的には

ファイル構成

  1. Zend_Service_Amazon
  2. Zend_Service_Amazon_Item
  3. Zend_Service_Amazon_ResultSet
  4. Zend_Service_Amazon_Image

解析方法

  1. HttpResuestで情報を取得
  2. DOMオブジェクト生成した後にXPATHでDOMを簡単に検索できるようにしてなんちゃらかんちゃら
  3. 情報の集まりを上記のクラスでまとめてオブジェクトにする

だが、rakutenApiの場合は、

$dom = new DOMDocument();

からのXpath経由で情報がいまいち解析ができないようなので単純に取得できないようなので phpの関数「simpleXML」の関数を利用して解析するようにしました。

とりあえず、できたのでよかったです。

define('BASE_DIR',      "/hoge/hogehoge");

$ADD_PATH = array(
    BASE_DIR . '/library/',
    BASE_DIR . '/library/Pear/',
    get_include_path()
);
set_include_path(implode(PATH_SEPARATOR, $ADD_PATH));
require_once("/home/www.petit.cc/library/Zend/Http/Client.php");

// rakuten
$url = "http://api.rakuten.co.jp/rws/3.0/rest?hogehogehoge=hoge";

// http_request
$params = array();
$client = new Zend_Http_Client($url);
$client->setConfig(array('timeout' => 30));
$client->setParameterPost($params);
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();

// get Body
$body = preg_replace("/(\n|\r\n|\r)/","", $response->getBody());
// TEST
echo $body;

// XML解析
$parser = xml_parser_create('UTF-8');
xml_parse_into_struct($parser,$body,$values);
xml_parser_free($parser); 
var_dump($values);

でも、不明なのは ・なんでZendはDOMDocumentで解析して ・rakutenApiの取得した情報はDOMDocumentで解析できなかったのか は未だによくわかっていないのが現状であります。

参考URL

http://www.w3.org/TR/xpath/ http://logic.moo.jp/memo.php/archive/723