[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 メーリングリストの案内