楽天トラベル地区コードAPI サンプルコード

楽天トラベル地区コードAPIのサンプルコードです。
当ホームページでは、PHP5を使用しています。PHP5が使用できない環境の方は、こちらのエックスサーバーをご検討下さい。当ホームページでも使用しているおすすめのサーバーです。

サンプルコード

楽天トラベルの地区コードを表示するサンプルコードです。ただ表示させただけです。
サンプルコードの実行結果  地区コードの一覧を見る
リクエストURLは、リクエストの作成へ

★★にはデベロッパーIDを、◆◆には、アフィリエイトIDを入れて下さい。
詳しくは、デベロッパーIDアフィリエイトIDを参照下さい。

一部スタイルシートを使用しています。スタイルシートの本

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>楽天トラベル地区コードAPI サンプル</title>
</head>
<body>
<h2>大区分:japan</h2><hr>
<?php
$base = 'http://api.rakuten.co.jp/rws/1.11/rest?developerId=★★';
$affiliateId = '&affiliateId=◆◆';
$operation = '&operation=GetAreaClass&version=2008-02-14';
$file = $base .$affiliateId .$operation;

$data = file_get_contents($file);
$data = str_replace('getAreaClass:GetAreaClass', 'GetAreaClass', $data);
$xml = simplexml_load_string($data);

foreach($xml->Body->GetAreaClass->largeClass->middleClass as $middleClass){
  $middleClassCode = $middleClass->middleClassCode;
  $middleClassName = $middleClass->middleClassName;

  print "<h3>中区分:{$middleClassName} {$middleClassCode}</h3>\n";

  foreach($middleClass->smallClass as $smallClass){
    $smallClassCode = $smallClass->smallClassCode;
    $smallClassName = $smallClass->smallClassName;

    print "<h4>小区分:{$smallClassName} {$smallClassCode}</h4>\n";

    foreach($smallClass->detailClass as $detailClass){
      $detailClassCode = $detailClass->detailClassCode;
      $detailClassName = $detailClass->detailClassName;

      print "<h5>細区分:{$detailClassName} {$detailClassCode}</h5>\n";
    }
  }
  print "<hr>\n";
}
?>
<!-- Rakuten Web Services Attribution Snippet FROM HERE -->
<a href="http://webservice.rakuten.co.jp/" target="_blank">
Supported by 楽天ウェブサービス</a>
<!-- Rakuten Web Services Attribution Snippet TO HERE -->
</body>
</html>

サンプルコードの説明(PHP部分のみ)

プログラム 説明
$base = 'http://api.rakuten.co.jp/rws/1.11/rest?developerId=★★'; 基本URL+デベロッパーID
$affiliateId = '&affiliateId=◆◆'; ◆◆にアフィリエイトidを入れて、アフィリエイトidを指定する
$operation = '&operation=GetAreaClass&version=2008-02-14'; API名とバージョンの指定
$file = $base .$affiliateId .$operation; クエリをつなげて、リクエストURLを作成する
$data = file_get_contents($file);
$data = str_replace
('getAreaClass:GetAreaClass', 'GetAreaClass', $data);
フィールド名に「:」があるとパースできない。したがって、「getAreaClass:GetAreaClass」を「GetAreaClass」に変換している。
$xml = simplexml_load_string($data); XMLを$xmlに代入する。
foreach($xml->Body->GetAreaClass->
largeClass->middleClass as $middleClass){
middleClassを変数$middleClassに代入する。middleClass分繰り返す。
$middleClassCode = $middleClass->middleClassCode;他 middleClassCodeを$middleClassCodeに代入する。middleClassName以下同様
print "~"; XMLから抜き出したデータを表示する
<!-- Rakuten Web Services Attribution Snippet FROM HERE ---->以下 クレジット表示(必須)

フィールド名に「:」があると、パースできません

楽天トラベル地区コードAPIに限らず、フィールド名に「:」があるとパースすることができません。名前空間とか何とからしいですが・・・。
そこでfile_get_contents()でファイル内容を取得し、str_replace()で「:」のある部分「getAreaClass:GetAreaClass」を「GetAreaClass」に置換しています。simplexml_load_stringであるところに注意!

$data = file_get_contents($file);
$data = str_replace('getAreaClass:GetAreaClass', 'GetAreaClass', $data);
$xml = simplexml_load_string($data);
ホームページ WEBサービス API PHP プログラミング