[PHP-users 28892] 名前空間の取得について
KAWASAKI, Shingo
s.kawasaki @ media-trust.com
2006年 3月 29日 (水) 15:34:52 JST
メディア・トラストの川崎と申します。
現在【PHP 5.1.2】でポッドキャスト関連の開発を行っております
RSS解析の部分で困っております。
以下の様なRSSがある場合、
=======http://aaa.bbbb.jp/rss2.0.xml==============
<?xml version="1.0" encoding="utf-8" ?>
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" version="2.0">
<channel>
<itunes:image href="http://aaa.bbbb.jp/image/test.jpg" />
</channel>
</rss>
=============================================
4行目の【http://aaa.bbbb.jp/image/test.jpg】の情報が欲しい場合に以下のように記述しております
===ソース=================================
const ITUNES = 'http://www.itunes.com/DTDs/podcast-1.0.dtd';
$this->rss = simplexml_load_file( 'http://aaa.bbbb.jp/rss2.0.xml' );
$image_array1 = $this->rss->channel->children(self::ITUNES)->image->attributes();
$url = $this->check_image( @$image_array1['href'] );
=========================================
これで【http://aaa.bbbb.jp/image/test.jpg】の情報は取得できてはいるのですが、問題が発生しました。
ソースの1、3行目の『ITUNES』に当たる部分(上記xmlの【xmlns:itunes】の部分)が取得するファイルによって、
http://www.itunes.com/dtds/Podcast-1.0.dtd
であったり、
http://www.itunes.com/DTDs/Podcast-1.0.dtd
であったりする場合がある為、名前空間を固定で指定するとそれぞれのURIで探しに行かなくてはなりません。
ですので、xmlロード時に【xmlns:itunes】の部分を動的に取得できないかと色々調査を行ってみたのですが、分かりませんでした。
「simplexml_load_file」を使用して取り込んだ時点で内容を全出力しても、【xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd"】
の部分が表示されません。(後ろの【version="2.0"】の部分は取得、表示できております)
xml内の【xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd"】の部分を動的に取得する方法、
またはその代替え案等あればご教示いただけないでしょうか?
よろしくお願い致します。
====================
株式会社メディア・トラスト
川崎 晋護 (Kawasaki Shingo)
Tel :06-6346-6301
Fax :06-6346-6302
s.kawasaki @ media-trust.com
〒530-0003
大阪市北区堂島1-1-5 梅田新道ビル10F
====================
PHP-users メーリングリストの案内