先日、バリューコマースのapiで「じゃらん」の画像を取り出すのが難しくて苦労したというお話をしたと思います。今日は、同じバリュコマのapiでヤフーショッピングの画像を取り出すというお話。


google広告

xmlの名称おさらい

<example class="属性" url="http://example...">要素</example>

ここで、xmlの名称についておさらいしておきたいと思います。上記のようなxmlがあった場合、<>内に書いてあるものが属性。挟まれているが要素です。要素を取り出すのは簡単。けれど、属性を呼び出すのが分かりませんでした。

バリューコマース、yahooショッピングのapiでは

vcapiyahoopicture001

vcapiyahoopicture002

バリューコマースのヤフーショッピングapiでは、じゃらんよりももっとややこしい作りに。。。
vc:imageというのが3つもあって、それを属性classで見分けなくてはいけない上に、取り出すべきurlも属性の中に入っています。

xmlの中のデータ。属性で指定して、その属性の値を取り出す

という操作が必要になります。基本的には、前回の記事でじゃらんの画像を取り出したのとほとんど同じやり方で取り出すことができます。

サンプル

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$url="http://webservice.valuecommerce.ne.jp/productdb/search?token=(あなたのapiキー)&keyword=%e6%ad%af%e3%83%96%e3%83%a9%e3%82%b7&ec_code=0hzmc&price_min=&price_max=&sort_by=scor";
$xmldata = file_get_contents($url);
$xmldata = str_replace('vc:','vc',$xmldata);
$xml = simplexml_load_string ($xmldata);
$hits=$xml->channel->item;
?>
</head>
<body>
<?php foreach ($hits as $hit) : ?>
<img src="<?php
 foreach ($hit->vcimage as $vcimage) :
    switch((string) $vcimage['class']) { // classの中の要素largeの値を取り出す
    case 'large':
        echo $vcimage['url'];
        break;
    }
 endforeach;
 ; 
?>" />:<span class="b"><?php echo ($hit->title); ?></span><br />
<?php  endforeach; ?>
</body>
</html>

属性の値を取り出すときは[”]なんですね。勉強になりました。上記のファイルをexample.phpなどとしてサーバーにアップすると、以下のように画像が取り出せます

vcapiyahoopicture003

広告