- ベストアンサー
PHP5でのXMLパーサーについて
PHP5で $xml = simplexml_load_file($url)を使って ヤフーオークションAPIから帰ってきたデータを処理したいのですが、 titleは {$xml->item[0]->title}で取得できることがわかったのですが、 totalAuctionsなど@attributesの中のデータを取得することができません。 どのようにすればよいかご教授願います。 よろしくお願いします。 SimpleXMLElement Object ( [@attributes] => Array ( [totalAuctions] => 3677 [totalPage] => 74 [curPage] => 1 ) [item] => Array ( [0] => SimpleXMLElement Object ( [auctionID] => ***** [title] => ****** [seller] => SimpleXMLElement Object ( [id] => *** [itemlist] =>http://api.auctions.yahoo.co.jp/AuctionWebService/V1/SellingList?sellerID=*** [rating] =>ttp://rating2.auctions.yahoo.co.jp/jp/show/rating?userID=*** ) [url] => http://******************************** [img]=>http://**********************************.jpg [price] => **,000 円 [bids] => ** [endtime] => *月 **日 **時 **分 [reserved] => SimpleXMLElement Object ( ) [option] => SimpleXMLElement Object ( [0] => ) ) ) )
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SimpleXMLElement->attributes() で属性が取得できます。 http://jp.php.net/manual/ja/function.simplexml-element-attributes.php DOMを使った方が楽かもしれませんね。
その他の回答 (1)
参考URLの、「レスポンスフィールド」の説明が 参考になるかもしれません。
補足
このレスポンスフィールドの部分は見ています。 結果はこのように帰ってきます。 <AuctionCategoryLeaf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:auc:leaf" xsi:schemaLocation="urn:yahoo:jp:auc:leaf http://api.auctions.yahoo.co.jp/AuctionWebService/V1/CategoryLeaf.xsd" totalFAuctions="69" totalAuctions="461" totalPage="11" curPage="1" categoryPath="オークション > この部分の属性のtotalFAuctions="69"とかがとりたいのです。 {$xml->attribute->totalFAuction}とやっても取得ができません。 よろしくお願いします。
お礼
回答ありがとうございます。 SimpleXMLElement->attributes()は、既に試していましたが全く取得できませんでした。 例文にあるように foreach($xml->attributes() as $a => $b) { echo $a,'="',$b,"\"<br>"; } のようにすると取れることがわかりました。 自分でやっていたのは、 $xml->AuctionSearchResult[0]->attributes()->totalAuctionとか やっていたのですが、$xml->attributesでいいのですね。 非常に勉強になりました。ありがとうございました。