 Contents
 Contents 
- UNIX
- Windows
- サーバ
- プログラミング言語
- データベース
- プロトコル
- サービス
- オープンソース
- 規格・技術
- アプリケーション
- PC
- DEVICE
- その他(未分類)
お問合せ:  メールフォーム
 メールフォーム
Yahoo ショッピング の 商品検索 API で XML のパースに xpath を使った時のメモ。
ちなみに、同APIには 取得形式として「PHP seriallize」があり、PHPのシリアライズ化されたデータでの取得も可能ですが、今回はどうしても xpath を使ってみたかったので、XML で取得します。
API をたたくと、以下のような XML データが取得できます。
$url = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid=<APPID>&query='.urlencode('パソコン'); $xml = file_get_contents($url); var_dump($xml);
↓ 取得結果
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet xsi:schemaLocation="urn:yahoo:jp:itemSearch http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch.xsd" 
xmlns="urn:yahoo:jp:itemSearch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" totalResultsAvailable="168044" 
totalResultsReturned="20" firstResultPosition="1">
   <Result>
      <Request>
         <Query>パソコン</Query>
      </Request>
      <Modules />
      <Hit index="1">
         <Name>TOSHIBA 東芝 PST422FCWZR1U dynabook Satellite T42 216C/5W A4 ノートパソコン</Name>
         <Description>★在庫有り!即日発送可!  CPU Intel Celeron プロセッサー 585 2.16GHz …(snip) …</Description>
         <Headline>延長保証受付中!在庫有り!</Headline>
  :
 (snip)
  :
$url = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid=<APPID>&query='.urlencode('パソコン'); $xml = file_get_contents($url); // SimpleXMLElement オブジェクト $sxe = new SimpleXMLElement($xml); // 名前空間の登録 // 今回はプレフィクス「y」を登録 $sxe->registerXPathNamespace('y', 'urn:yahoo:jp:itemSearch'); // HIT数 の取得 $res = $sxe->xpath('//y:ResultSet/@totalResultsAvailable'); echo "HIT数: {$res[0]}".PHP_EOL; // 最初にHITした商品名 の取得 $res = $sxe->xpath('//y:Result/y:Hit/y:Name'); echo "最初にHITした商品名: {$res[0]}".PHP_EOL; exit;
↓ 結果
HIT数: 168044 最初にHITした商品名: TOSHIBA 東芝 PST422FCWZR1U dynabook Satellite T42 216C/5W A4 ノートパソコン