• 締切済み

名前空間の取得について

下記のようなRSSがある場合の質問です。 ------------------------------------------------------------ <?xml version="1.0" encoding="utf-8" ?> - <rss version="2.0"> - <channel>  <title>RSS</title>  <link>http://www.xxhogehogexx.com</link>   - <item>     <title>タイトル</title>     <link>http://www.xxhogehogexx.com</link>     <description>説明文</description>     <vc:a xmlns:vc="http://www.xxhogehogexx.com">aaaaaaaaaaaaaaaaaaaa</vc:a>     <vc:b xmlns:vc="http://www.xxhogehogexx.com">bbbbbbbbbbbbbbbbbbbb</vc:b>   </item>   - <item>     <title>タイトル</title>     <link>http://www.xxhogehogexx.com</link>     <description>説明文</description>     <vc:a xmlns:vc="http://www.xxhogehogexx.com">aaaaaaaaaaaaaaaaaaaa</vc:a>     <vc:b xmlns:vc="http://www.xxhogehogexx.com">bbbbbbbbbbbbbbbbbbbb</vc:b>   </item>  </cannel>  </rss> ------------------------------------------------------------ phpのsimplexml_load_fileを使って「title」や「link」は習得できるのですが「vc:a」や「vc:b」 といったnamespaceが使用された箇所を習得することができません。 いろいろ調べて「dc:date」など似たような状況のRSSを習得する方法はわかったのですが上記の ものがどうしても習得できませんでした。 どのようにすれば「simplexml_load_file」を使用して習得できますでしょうか? よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

xmlの名前空間についてあまり知識はないのですが、XMLの構文自体が間違っているからではないでしょうか? http://hail2u.net/documents/rss20notes.html#extend_rss20 <rss version="2.0" xmlns:dc="http://example/"> という風な記述が見当たりませんが。

関連するQ&A

  • PHPでRSSから要素を取得する方法について

    PHPでRSSから要素を取得する方法について 下記のrss情報から「lddata:syousai」にあるA,B,Cの各""内の情報をphpで変数に 格納しようと思っていますがどうしてもうまく行きません。 このような形式の場合、どのようにして取得したら良いのか お知恵を貸していただけないでしょうか。 PHPを勉強し始めたばかりなので恥ずかしい質問内容になっているかも知れませんが 何卒よろしくお願いいたします。 ▼XML 詳細 ・rssの場所 http://test.com/forecast/rss/test.xml ・rssの内容 <?xml version="1.0" encoding="UTF-8" ?> - <rss version="2.0" xmlns:lddata="http://test.com/ns/rss/2.0"> - <channel> <title>test</title> <link>http://test.com</link> - <item> <title>情報タイトル</title> <link>http://test.com/jyoho/2010-05-15-18-24.html?r=?rss</link> <lddata:syousai A="東京都" B="9" C="日付データ" />   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ↑変数に格納したい場所 </item> </channel> </rss>

    • ベストアンサー
    • PHP
  • 名前空間のあるXMLからの取り出し

    お世話になります。 <?xml version="1.0" encoding="UTF-8" ?> <Response> <header:Header xmlns:header="http://aa.com"> </header:Header> <Body> <itemCodeSearch:ItemCodeSearch xmlns:itemCodeSearch="http://bb.com"> <Item> <itemName>@@@@</itemName> </Item> </itemCodeSearch:ItemCodeSearch> </Body> </Response> から、@@@@の部分を抜き出し取得したいのですが、ご存知の方いらっしゃいませんでしょうか? simplexml_load_string()で抜き出すときには、: があるとうまくいかないということですが・・ 全体が$xmlにはいっているとして、 $xml->Body->itemCodeSearch->Item->itemName; とし、うまくいっていたのですが、名前空間がどうのというエラーが発生したりします。 ご存知の方ご教授ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • simplexml_load_fileを使用してblogのRSSを読み

    simplexml_load_fileを使用してblogのRSSを読み込み、ページ内に表示させたいのですが 下記のスクリプトでは楽天とlivedoorのRSSの読み込みが出来ません。 色々検索してみたのですがこれといった解決法を発見できなかったので質問させていただきます。 どうぞよろしくお願いいたします。 <?php $xml = simplexml_load_file('RSSをここに入力'); $i = 0; foreach($xml->channel->item as $item) { if(++$i>5) break; $title = (string)$item->title ; $link = (string)$item->link ; echo ("<li><a href=".$link.">".$title."</a></li><br />"); } ?>

    • ベストアンサー
    • PHP
  • RSSのXMLロードで失敗してしまう

    RSSのデータを取得する、という処理を行いたいのですが、 文字コードの件でひっかかってしまっているようで なかなか前に進むことができません。 ************ // RSSの内容を取得する $rss_text = file_get_contents(※RSSのフィードURL); // RSSの文字エンコーディングを変換→再変換 $rss_text = mb_convert_encoding($rss_text, 'SJIS', 'UTF-8'); $rss_text = mb_convert_encoding($rss_text, 'UTF-8', 'SJIS'); $rss_text = preg_replace('/[\x00-\x1f]/', '', $rss_text); // RSSをパースする $rss_xml = new SimpleXMLElement($rss_text); if ($rss_xml) { // XML解析に成功した場合 // SimpleXMLElementオブジェクトからデータを取得 $items = $rss_xml->item; foreach($items as $item) { echo 'ID:'. $item->guid. '<br />'; echo 'リンク:'. $item->link. '<br />'; echo '日付:'. $item->pubDate. '<br />'; echo 'タイトル:'. $item->title. '<br />'; echo '本文:'. $item->description. '<br />'; } } ************ こういったコードを組んでいるのですが、現状では Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : attributes construct error in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Couldn't find end of Start Tag rss line 1 in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Extra content at the end of the document in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... このようなエラーが表示されてしまいます。 自分なりに文字コードを処理しているつもりではあるのですが、 他にも何かしなければならないことがあるのでしょうか? どうぞ知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • simplexml_load_fileについて

    simplexml_load_fileでrssを読み込んでいるのですが、 rssのxmlファイルが少し特殊でリンクが抜けているitemがあり、 以降ずれ込んで読まれてしまい困っています。 ■xml例 <root> <item> <title></title> <link></link> </item> <item> <title></title> <link></link> </item> <item> <title></title> ←リンクがぬけている </item> <item> <title></title> <link></link> </item> </root> ■php側 抜粋/割愛 $xml = simplexml_load_file($this->xmlPath) or die("ファイルが読み込まれません"); //xpathにて各ノードを取得 $title = $xml->xpath(//title); $link = $xml->xpath(//link); for($i = 0; $i < 3; $i++) { <a href="<?=$link[$i]?>"> <?=$title[$i]?> </a> } のように取得して、html加工して 吐き出しているので、linkがないノードがあると 後のものがどんどんずれて読み込まれてしまいます・・・ どのようにしたら解決できますでしょうか・・・

    • 締切済み
    • PHP
  • PHPで以下のサイトのrssの情報を獲得したいのですが、なぜか<ite

    PHPで以下のサイトのrssの情報を獲得したいのですが、なぜか<item>を獲得できません。 rss: http://twib.jp/rss phpコード: $rss =simplexml_load_file('http://twib.jp/rss'); print_r($rss); $title =$rss->channel->title; echo $title; foreach ($rss->channel->item as $item) { echo $item->title; echo $item->description; echo $item->link; echo $item->pubDate; } どなたか、どこを直せばよいか教えていただけないでしょうか。

    • 締切済み
    • PHP
  • rdfをIE7に認識させるには

    自分のサイトでRSSを配信したいと思い、新着情報を書き込む際にinndex.rdfを生成するWEBアプリを作っています。 index.rdfを生成して、サーバーに保存するところまではできました。 ところがインターネットエクスオプローラー7で確認したところ、RSSと認識していないようで、タイトルとURLと概要をずらずら並べたような文章が表示されました。 .htaccess も作成して「AddType application/xml .rdf」と記載しています。 goo RSSリーダーで試したところ、問題なく表示されました。 どこに問題があるのでしょうか。 ----------------- <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns/" xmlns="http://purl.org/rss/1.0/" xmlns:lang="ja" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" > <channel rdf:about="RDFファイルのURL"> <title>HPの名称</title> <link>HPのURL</link> <description>HPの紹介文</description> <items> <rdf:Seq> <rdf:li rdf:resource="記事のURL1" /> <rdf:li rdf:resource="記事のURL2" /> </rdf:Seq> </items> </channel> <item rdf:about="記事のURL1"> <title>タイトル1</title> <link>記事のURL1</link> <description>概要1 </description> </item> <item rdf:about="記事のURL2"> <title>タイトル2</title> <link>記事のURL2</link> <description>概要2 </description> </item> </rdf:RDF>

  • PHP ブログの交信記録

    PHP初心者です。 下記のソースで一行目の$rss = simplexml_load_file( 以降にアドレスを入れて、ブログの更新情報を表示させたいのですが、うまくいきません。なぜでしょうか? <?php $rss = simplexml_load_file("http://d.hatena.ne.jp/xxxx/rss"); foreach ($rss->item as $item) { $dc = $item->children('http://purl.org/dc/elements/1.1/'); $link = $item->link; $title = $item->title; $date = $dc->date; $date = strtotime($date); $date = date('Y/m/d',$date); echo "<li>$date&nbsp;:&nbsp;<a href=\"$link\">$title</a></li>\n"; } ?>

    • 締切済み
    • PHP
  • RSS Feedの外部ファイル読み込み

    RSS Feedのソースの中に外部ファイルを読み込むことは出来ますでしょうか? 以下のような感じで、RSS Feedのrss.xmlにcontents.xmlをインクルードすることは、可能でしょうか。 可能であれば、どのように記述すれば良いでしょうか? 分かる方、よろしくお願い致します。 rss.xml----------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xml:lang="ja"> <channel> <title>RSSのタイトル</title> <link>http://~</link> <description>RSSの説明</description> <language>ja</language> <copyright>RSSのコピーライト</copyright> <lastBuildDate>日付</lastBuildDate> <item> <title>タイトル1</title> <link>http://~</link> <description>タイトル1の説明</description> <category>タイトル1のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ここに「contents.xml」の内容を読み込みたい </channel> </rss> ------------------------------------------------------------------ contents.xml------------------------------------------------------ <?xml version="1.0" encoding="UTF-8" ?> <item> <title>タイトル2</title> <link>http://~</link> <description>タイトル2の説明</description> <category>タイトル2のカテゴリ</category> <pubDate>タイトル2の日付</pubDate> </item> ------------------------------------------------------------------

    • ベストアンサー
    • XML
  • PHP4でXML

    こんにちは。PHPでXMLファイルを書き換えたいのですが、サーバ環境がPHP5ではありません。以下のようにHTMLと同じ方法でphpファイルを読み込むことは不可能なのでしょうか?だとしたら他に良い方法はありますか?困っています。どなたか助けてください。よろしくお願いします。 <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>○○1</title> <link>http://○○</link> <description>ウェブサイトに掲載されている最新の情報を掲載しております。</description> <language>ja</language> <copyright>Copyright (c) 2007 ○○, Inc. All Rights Reserved.</copyright> <pubDate><?php include("../rss/date.php"); ?></pubDate> <item> <title>ニュースリリース</title> <link>http://○○</link> <description><?php include("../rss/news.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>商品一覧ページ</title> <link>http://○○</link> <description><?php include("../rss/prodact.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> <item> <title>沿革</title> <link>http://○○</link> <description><?php include("../rss/corporation.php"); ?></description> <pubDate><?php include("../rss/date.php"); ?></pubDate> </item> </channel> </rss>

    • 締切済み
    • XML

専門家に質問してみよう