[PHP]simplexml_load_fileについての質問です。

xmlファイルの中は下記のようになっていることを条件にほしいデータを取り出すプログラムをどのように作成すればいいのか行き詰まっています。
abc.xmlの中身です。
***************
<entry>
<id>http://aaa.com</id>
<media:group>
<media:title type="plain">001.JPG</media:title>
<media:content url="http://bbb.com/image/001.JPG" height="1600" width="1200" type="image/jpeg" medium="image"/>
***************
mediaの位置を取得するためのURLはhttp://search.yahoo.com/mrss/としています。
プログラムを作成してみましたが、<media:contentの子ノード部分urlだけ取得できていません。
対処方法を教えていただけるとありがたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/06/22 11:16:12
  • 終了:2007/06/29 12:47:06

回答(1件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692007/06/22 19:21:06

ポイント60pt

あまり美しくないですが、何とかできたようなので。

$str = <<< EOL
<?xml version="1.0" encoding="UTF-8"?>
<entries xmlns:media="http://q.hatena.ne.jp/">
<entry>
<id>http://aaa.com</id>
<media:group />
<title type="plain">001.JPG</title>
<media:content url="http://bbb.com/image/001.JPG" height="1600" width="1200" type="image/jpeg" medium="image"/>
</entry>
<entry>
<id>http://bbb.com</id>
<group />
<title type="plain">001.JPG</title>
<content url="http://ddd.com/image/001.JPG" height="1600" width="1200" type="image/jpeg" medium="image"/>
</entry>
</entries>

EOL;


$xml = simplexml_load_string($str);
$xml->registerXPathNamespace('abc', 'http://q.hatena.ne.jp/');
$res = array_shift($xml->xpath('//entry[id="http://aaa.com"]/abc:content'));

$url = (string)$res['url'];

print $url;

結果は、
http://bbb.com/image/001.JPG

パースエラー等出てきたので、少し xml 部分を変更しています。

こんなのでいかがでしょうか?

http://www.php.net/manual/ja/function.simplexml-element-register...

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません