- ベストアンサー
急にXMLパースエラーが表示されるようになりました
現在運営しているサイトでRSSを配信しています。 特にどこかをいじった覚えはないのですが 先月末ごろから急に以下のようなエラーがでるようになりました。 ※ブラウザはFirefoxを使っています。 XML パースエラー: 要素が見つかりません。 URL: http://www.○○○.com/index.rdf 行番号: 1, 列番号: 1: メールソフトでも受信しようとすると「有効なRSSファイルではありません」と表示されるようになりました。 文字コードの設定も確認したのですが原因がわかりません。 配信しているrdfファイルは以下のようになっております。 <?php $uri = "http://feeds.feedburner.jp/○○○"; $reqq = file_get_contents( $uri ); header("Content-type: application/xml"); print $reqq; ?> しくみはよくわかってないのですが 本体部分は別のファイルから読み込んでいます。 また、不思議なのは上記のhttp://feeds.feedburner.jp/○○○ 部分のURLにアクセスすると正常にRSS情報が表示されます。 本体ファイル <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="ja"> ...以下続く 原因がまったく特定できず困っております。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHP経験なし。 >※ブラウザはFirefoxを使っています。 >また、不思議なのは上記のhttp://feeds.feedburner.jp/○○○ 部分のURLにアクセスすると正常にRSS情報が表示されます。 であることから http://feeds.feedburner.jp/○○○に誤りはまずない。なので 原因はPHP側。file_get_contentsかprintか知らないが。 俺としてはこれに似たケースに思えるが,先ほども言ったとおり未経験なので自信なし。 http://oshiete1.goo.ne.jp/qa2757771.html >PHPを確認するまえにまず出力されたXMLを検証する所 さらに言うと,俺なら W3C Markup Validatorをかけるんじゃなくて application/xmlをtext/plainにしてどうなっているか見てみると思う。 >In addition, >"application/xml" media type is not specific enough なのでヘッダで文字コード指定しなきゃいけないということはないと思おう。
その他の回答 (2)
- himajin100000
- ベストアンサー率54% (1660/3060)
念のために補足してほしいんだけど >現在運営しているサイト どこかのレンタルサーバ?(自分が変えたつもりがなくても業者側が設定を変えている可能性があったりして・・・) #自宅サーバならごめんなさい
PHPを確認するまえにまず出力されたXMLを検証する所から始めたら良いと思う http://validator.w3.org/ http://validator.w3.org/feed/
補足
上記サイトでは以下のような結果が返ってきました。 英語がよくわかりませんが、やはり1行目に何か原因があるようなのですが・・ This feed does not validate. line 1, column 0: XML parsing error: <unknown>:1:0: no element found [help] In addition, this feed has an issue that may cause problems for some users. We recommend fixing this issue. "application/xml" media type is not specific enough [help]
お礼
お礼が遅くなってすいません。 なんとか解決しました。 原因はやはりPHP部分にあったようです。 $uri = "http://feeds.feedburner.jp/○○○"; $reqq = file_get_contents( $uri ); この部分でhttp://feeds.feedburner.jp/からrdfファイルを読み込んでいたのですが、 おそらくfeeds.feedburner.jpの仕様変更?か何かの原因で読み込みができなくなったようです。 読み込み可能な別のURLにRDFファイルを置いたところ 正常に機能しました。 ありがとうございました。