質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

3302閲覧

【cakePHP】XMLから配列への変換

pecchan

総合スコア555

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/08/25 04:44

編集2016/08/25 07:07

初めてAmazon APIで開発してます。

Amazonへリクエストを送って、結果を取得する所まで出来ました。

受け取った結果(XMLデータ)を、一覧画面(cakePHPのPaginator)に出力しようと思いました。
※XMLはファイルではなく、データです。

そこでXMLデータを配列に変換しようと思い、以下のようにコーディングしましたが、
配列に何も取得出来ません。

変換後の配列をデバッグすると
array(0) {
}
と表示されます・・・。

foreachで確認するとちゃんと結果は取得出来ています。

PHP

1 2 //リクエスト送信 3 $result = $this->amazon->request($url); 4 5 $xml = new Xml($result); 6 7 8 $array = Set::reverse($xml); 9 10 //結果は、array(0) {]となります・・・orz 11 var_dump($array); 12 13 //こっちはOK 14 foreach($result->Items->Item as $item) 15 { 16 var_dump($item->ItemAttributes->Title); // 商品名 17 18 } 19

上記は、$this->amazonのアマゾンクラスは省略してました。追記します。
以下を参考にしました
http://blog.codebook-10000.com/entry/20131112/1384191896

XMLから配列に変換する方法が間違っているでしょうか?

foreachで回しながら1つずつ配列にする方法が正しいのでしょうか?

そもそもAmazonの結果(XML)を画面に出力する場合、今回のような流れであっているのでしょうか?

cakePHPのバージョンは2.xです。

以上、分かる方居ましたらアドバイス宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2016/08/25 06:41

Xmlクラスはどこから来たんですか?
pecchan

2016/08/25 06:56

XMLデータは取得済みなので今回省略してました。
guest

回答1

0

ベストアンサー

CakePHPは2.xでしょうか?
であれば、以下のコードでパースできないでしょうか。

php

1$result = $this->amazon->request($url); 2App::uses('Xml', 'Utility'); 3$array = Xml::toArray(Xml::build($result));

投稿2016/08/25 07:00

samuraiders

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pecchan

2016/08/25 07:05

有難う御座います。 $array = Xml::toArray(Xml::build($result)); の行で Error: An Internal Error Has Occurred. となります。 エラーの原因を調べてます。
pecchan

2016/08/25 07:05

はい。バージョンは、2.6.7です
pecchan

2016/08/25 07:08

有難う御座います。 $array = Xml::toArray($result); で通りました。 XMLのURLではなくXMLデータそのものでした。 有難う御座いました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問