⑤PHPでAmazon MWS APIで取得したXMLの商品名を抜き出してブラウザに表示してみる。

え~前回、PHPでAmazon MWS APIを使って商品名を無事に取得できました!

パチパチパチパチ

前回を読んでいない方は、こちらからどうぞ。
④PHPでAmazon MWS APIを使って商品名をXMLで表示してみる。

 

まあ、しかし、商品名を取得したとは言っていますが

実際は、XMLの戻り値をそのまま表示しただけなので

見栄えをまったく考えていませんでした(笑)

 

そんな訳で、今回は取得したXMLから商品名を抜き出して

ブラウザに表示させてみたいと思います。

 

具体的にやりたいこと

前回は、こちらの文字だらけのXMLを表示しただけでした。

今回は、ここから、46行目の商品名だけを表示させるようにしたいと思います。

— こんな出力イメージ —
商品名
栗山米菓 ばかうけアソート 40枚入

 

今回はこれだけです(笑)

 

ちなみに、私は、PHPはド素人です(笑)

出来なかったらごめんなさいということで。

では、さっそくやってみましょう!

 

と言ってもド素人ですから、Google先生に聞きます(笑)

 

参考にしたサイトはこちらです。
参考 PHP: DOMDocument::createElementNS - ManualPHP

 

今回は、楽勝だろうと思ったのですが、ドツボにはまりました(笑)
上のXMLの出力例を見ると、<ns2:xxx>というのがあります。

これにやられました!

何と、カート価格を取得したときに作ったコードでは、上手く取得できないのです!

どうやったら、値を取れるんだよ!と焦ること数日・・・

Google先生に何度も聞きました。

 

どうやら、:コロンでつなぐことを名前空間と言うようです。

 

なんじゃそりゃ?ですよ(笑)

 

詳しくは、ググってみてくださいね。

まあ、とりあえず、名前空間から値を取る方法を調べました。

 

取得の仕方も色々あるようで、気がついたらごちゃ混ぜになっていました。

そこで、まずはDOMというもので、突き進めていましたら

上のサイトでようやく突破できました。

 

上のサイトは、何度か見ていたのですが、意味が分からなくスルーしていました(笑)

色々と試しているうちに、また辿りついて解決することができました。

なんとなく、慣れたきたのでしょう(笑)

それでも、意味も完全には分かっていなく、たまたま解決したに過ぎません・・・

 

そのような訳ですので、ここから先は、完全なる自己責任となりますのであしからず(笑)

XMLの出力結果を取り込むコードを作成する。

前回使用したサンプルコードは、GetMatchingProductForIdSample.php でした。

これに、少し手を加えます。


こちらは、前回追加した行ですが、83行目のASINを1つから3つに増やしてみました。

 

つぎに、以下の invokeGetMatchingProductForId の中の echo文をコメントアウトします。

コメントアウトした理由は、今回の目的以外の文字を表示させたくない為です。

 

そして、今回の目玉!XMLを取り込むコードを、125行目に追加しました。

追加したコードですが、先にお話ししたとおり時間がかかりました(涙)

しかし、どうにか目的のことは達成できました!

コードを実行した結果(先にみせます!)

では、先に結果を見てもらいましょう~!

 

はい、こちらです!

 

じゃーん!

おお~!パチパチパチパチ!拍手をください~!!

 

なんとか、がんばりましたー!!

 

ASINの実際の商品はこちら

見事にあっています!(当然ですがw)

では、苦労して作成したコードを見ていただきましょう!

作成したコード

product_name_disp.php

こちらが、色々なサイトを参考にして作ってみたXMLから商品名を抜き出すコードです。

前回のカート価格を抜き出した時とは、大きく様変わりしました(笑)

結果としては、カート価格のときよりはシンプルで見やすくなりました。

え?これで取得できるのと思いました(笑)

ちなみに、無駄な処理があるかもしれませんが、気にしておりません。

あくまで、目的の値を所得できればOKとしています。

では、自己責任となりますが、ご参考までに記載いたします。

前回より、大分シンプルになりました!

前回のコードは、分かりにくくて困りましたが、今回はすげー分かりやすい!と思いました(笑)

苦労した甲斐がありました!

作成したコードをご参考用にどうぞ

そのようなコードですので、完全なる自己責任でご参照ください。

いかなる責任も負いかねます。

product_name_disp.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>GetMatchingProductForId 実行結果</title>
</head>
<body>
<h1>GetMatchingProductForId 実行結果</h1>
<table border="1">
<tr><th>Status</th><th>ASIN</th><th>商品名</th></tr>
<?php
//--------------------------------------
// phpで結果を取得して表示する。ここから
//--------------------------------------

//----------------
//statusを取得
//----------------
$statusList = $dom->getElementsByTagName('GetMatchingProductForIdResult');

//----------------
//ASINを取得
//----------------
$asinList = $dom->getElementsByTagName('ASIN');

//----------------
//商品名を取得
//----------------
$titleList=$dom->getElementsByTagNameNS('*','Title');

//---------------------------
//取得した各リストを表示する
//---------------------------
for ($i=0; $i<$titleList->length; $i++){
	echo "<tr>";
	echo "<td>" . $statusList->item($i)->getAttribute('status') . "</td>";
	echo "<td>" . $asinList->item($i)->nodeValue . "</td>";
	echo "<td>" . $titleList->item($i)->nodeValue . "</td>";
	echo "</tr>";
}
//--------------------------------------
// phpで結果を取得して表示する。ここまで
//--------------------------------------
?>
</table>
</body>
</html>

まとめ

今回の掲題

「PHPでAmazon MWS APIで取得したXMLの商品名を抜き出してブラウザに表示してみる。」

は、大成功です!

 

プチ成功体験が、次なるやる気を生み出しています(笑)

 

ということで、次なる課題は、商品画像を取得してみたいと思いますー!

 

また時間がかかりそうです。

ではこれにておひらき。

ご清読ありがとうございました。

ワテ

プログラムをオンラインで学ぶならUdemy(ユーデミー)がおすすめです。好きな時間に視聴できるので私も受講しています。


セール期間なら千円台でお得だぞ

カメ吉

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください