AmazonAPIをPHPで触っているのですが、simplexml_load_file()でXMLオブジェクト(?)を生成し、print_rやvar_dumpで出力してみたのですが、見方がわからず目的の要素の取得の仕方(そこまでのパス(* -> * -> * の *))が分かりません。

例えば、print_rだと下記のように出力されます。
--
SimpleXMLElement Object ( [OperationRequest] => SimpleXMLElement Object ( [RequestId] => b15ee064-56b6-4997-a56a-2ebaff0e78e3 [Arguments] => SimpleXMLElement Object
--
下記のように見やすい形に整形すれば分かりやすいかと思うのですが、どうやれば出来るでしょうか?
<>
<>hoge<>
<>hogehoge<>
...

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/08/09 22:20:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント50pt

元々整形されていますがHTML中に出力しているから崩れるのだと思います。

  1. コマンドラインで実行する
  2. preで囲う
  3. HTMLのソースを見る

参考

id:a-kuma3 No.2

回答回数4966ベストアンサー獲得回数2151

ポイント50pt

まず、要素のたどり方ですが、↓が分かりやすいと思うんですが、どうでしょう?

http://manual.xwd.jp/ref.simplexml.html



で、

print_rやvar_dumpで出力してみたのですが、見方がわからず

については、期待してるものは print_r では得られない、と思ってください。

SimpleXML の中身をみたいジャン、ってときは、ひとてま必要です。

以下のようなコードで、全ての要素をたどることができます。

$xml = ...
displayChildrenRecursive($xml);

function displayChildrenRecursive($xmlObj,$depth=0) {
  foreach($xmlObj->children() as $child) {
    echo str_repeat('-',$depth).">".$child->getName().": ".$subchild."
";
    displayChildrenRecursive($child,$depth+1);
  }
}

http://debuggable.com/posts/parsing-xml-using-simplexml:480f4dfe-6a58-4a17-a133-455acbdd56cb

からの受け売りです。

ページの上から 1/5 くらいのところに「Accessing Children」という項があります。

英語が分からなくても、コードの例だけを追っていけば、なんとなく分かると思います。

  • id:rouge_2008
    http://q.hatena.ne.jp/1312088196

    前回の質問への回答で解決しないでしょうか?
    回答No3のpacochiさんの回答を試してみてください。
  • id:rapuntuleru
    前回では、変数の中身がfile_get_contentsの結果であったためテキストだったので、目的の、<>を表示したいということは達成できたのですが、それでは一部うまくいかない部分があったので今回はsimplexml_load_fileでXMLオブジェクトを生成する方法で試してみているのですが、そうなると前回のやり方では出力出来なくなると思います(試してみたのですが、出力されませんでした)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません