なかちょんブログ

プログラミングとマイクラ好きな子育てパパのブログ

API叩いてXMLで返してもらった時、これってどうやって取り出すんだ?とおもったらattributes()だった件

   

しばらくやっていないと忘れてしまうのでメモ

ヤフオク!のAPIを使って、結果をXMLでもらう時、最初のResultSetに、該当件数の個数(totalResultsAvailable)や今回返してもらったデータが何番目だとか(firstResultPosition)が入っているんだけど、これを取得するときの方法。

<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:auc:search" xsi:schemaLocation="urn:yahoo:jp:auc:search http://auctions.yahooapis.jp/AuctionWebService/V2/search.xsd" totalResultsAvailable="682" totalResultsReturned="50" firstResultPosition="1">
<Result>
<UnitsWord>チャイルドシート コンビ</UnitsWord>
<UnitsWord>レカロ チャイルドシート</UnitsWord>
<UnitsWord>チャイルドシート アップリカ</UnitsWord>
<UnitsWord>チャイルドシート 新生児</UnitsWord>
<UnitsWord>自転車 チャイルドシート</UnitsWord>
<Item>
<AuctionID>d143879531</AuctionID>
<Title>美品 マシュマロベッド サーモ ベッド型チャイルドシート</Title>

やりかたは、

$sxml = simplexml_load_file($feedURL);
var_dump($sxml->attributes());

attributes()を使うとResultSetの中に入っているものが表示されます。

さらに、その中のtotalResultsAvailableの値を取得するには、

$totalResultsAvailable = $sxml->attributes()->totalResultsAvailable;
echo $totalResultsAvailable;

とすればOKです。

過去、何回もどうやるんだっけ?と思って毎回調べなおしていたので、自分のブログに書いておきます。

↓ 参考
PHP SimpleXML オブジェクト@(アットマーク)attributes のアクセス | MT Systems

 - API