• 締切済み

エラーのあるxmlファイルからの情報取得について

お世話になります。 いまPHPの勉強がてら、趣味も兼ねてウェブサイトを製作しています。 そのなかでパーサーを利用してxmlファイルから情報を取得してサイトに表示させるようにしようとしているのですが、下記のURLのものだけうまくいきません。 http://blog.nicovideo.jp/nicolumn2/atom.xml パーサーが吐き出したエラーは『変な文字が含まれている』というものだったので、エラーの場所を見つけた後に上記のファイルをブラウザ(GoogleCrome)で見てみると、下記のようなエラーがブラウザに表示されていました。 This page contains the following errors: error on line 422 at column 12: Input is not proper UTF-8, indicate encoding ! Bytes: 0x1C 0xEF 0xBD 0x9E Below is a rendering of the page up to the first error. 色々と検索した結果、xmlの受信側ではなく送信側の問題だと考えていますが、このxmlファイルから正常に情報を取得できるサイトがあるので、何らかの方法でこのエラーをクリアできると思い、修正を試みたものの、すべてうまくいきません。 そこで質問なのですが、以下の2点になります。 (1) パーサーがエラーを吐く原因は『送信されてくるxmlに不正な文字列が含まれており、エラーが出力されるのは送信側の問題である』という僕の解釈は問題ないでしょうか? (2) 自分の製作したウェブサイトにこのxmlファイルから正常に情報を取得し表示させる方法はありますでしょうか? よろしくお願いします。 ※ ・利用しているパーサーはmagpierssです。 ・上記xmlファイルから正常に情報を取得しているサイトはgoogleが提供しているサイトです。

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

みんなの回答

回答No.1

(1) その解釈で恐らく問題ないと思います。MagpieRSSは、内部で、PHPの標準関数である、xml_parse関数などを用いていて、 その関数が、不正な文字を見つけるとエラーでこけるのだと思います。 (2) xml_parseに渡す前段階で、不正な文字を消したりする処理が必要になるかと思います。 http://dozo.matrix.jp/pear/index.php?PHP/Liblary/SPL/SimpleXML/mb_convert_encoding こちらの記事(別のPHPの組み込みクラスでの話ですが)のように、文字コードを変更して戻したり、うまいことやらないと取得出来ないと思いますが、他者が作成したプログラムに対して追加処理を自前でかけるのは結構面倒です。 他所で、正常に取得できているサイトは、別のライブラリを使っていたり、Magpieのような組み込みのxml_parseやSimpleXML以外の、 Pear::XML_Unserializerのような、XMLをXMLとして通すのではなくて、文字列として、上から順番にガリガリ読み解くようなライブラリを使っているのかもしれません。 ちなみに、Pear::XML_RSSというRSS取得のためのライブラリもあるようです。 http://pear.php.net/manual/ja/package.xml.xml-rss.php 一度別のRSSリーダーとか、探してみても良いかもしれません。

関連するQ&A

  • RSSから情報を取得するには

    RSSを利用して情報を取得し色々と利用しようと思いRSSの技術については全く知識はありませんがXMLファイルを取得してそこから情報を切り出すくらいはできたのでいろいろなRSSフィードから取得していたら、XMLファイルをローカルに保存するとブラウザ上で見れる内容の最初の一部分しかないxmlファイルでした。 具体的にははてなキーワードAPIのRSSフィードです。これを正常に取得できないのは何がいけないのでしょうか?ブラウザで名前をつけて保存を行うと問題なく保存ができるので、ダウンロードの際の要素?属性?の様な物が間違ってるのでしょうか? どうかご教授ください。

    • 締切済み
    • XML
  • XML DOM XMLパーサーについて理解していません

    XMLについてイマイチ理解していないので教えてください。PHPでXMLファイルを開いて何らかの処理をするとします。例えば <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("docs/td101.xml") //要素"b"を取得する $bElement = $doc->getElementsByTagName("b")->item(0); //取得した要素"b"に属性"ad"を設定する $bElement->setAttribute("ad","Fukuoka"); //ドキュメントをシリアライズする $doc->save("docs/result101.xml"); ?> のようにXMLファイルに属性を追加するという処理を行うとします。この時、DOMはPHPによって生成されるんでしょうか?またXMLはXMLパーサーによって解析されると本で読んだのですが、この場合PHPがXMLパーサーの機能を持っているんでしょうか?それともブラウザにXMLパーサーの機能があり、ブラウザ側で処理をされているのでしょうか?意味がわからなくて申し訳ないですが、この辺りを理解していなくて・・・御願いいたします。

    • ベストアンサー
    • XML
  • グーグルサーチコンソールへのサイトマップxml送信

    サイトはFC2ブログを使用しています。 Website Explorerで作成したsitemap.xmlをグーグルサーチコンソールへ送信していますが 「取得できませんでした」というメッセージが表示されます。 間違っている点をお教えいただけないでしょうか。 【送信手順】 1.Website Explorerでsitemap.xmlを作成 2.作成したsitemap.xmlをFC2ブログにアップロード 3.グーグルサーチコンソールのサイトマップを選択 4.sitemap.xmlと入力し送信→「取得できませんでした」というメッセージが表示 5.アップロードしたsitemap.xmlの表示されているURLを入力し送信→「取得できませんでした」というメッセージが表示 という状況です。 よろしくお願いいたします。

    • 締切済み
    • SEO
  • XMLパースエラー

    はじめまして。 HTMLを開発している者です。 APIを駆使して情報を得たいのですが、localhost環境で開発していた時には正常に動作したのに、いざサーバーへアップすると、情報を取得するphpファイルで、 XML パースエラー: 要素が見つかりません。 URL: http://~ 行番号: 1, 列番号: 1: と出るのです。これはやはりサーバー環境によるエラーなのでしょうか? ご回答よろしくお願いいたします。

    • 締切済み
    • XML
  • XMLファイルの表示について

    ダウンロードしたXMLファイルを表示させようとすると(ie6)ブラウザは立ち上がるのですがXMLページを表示できません。 XSLスタイルシートを使用したXML入力は表示できませんエラーを訂正してくださいと表示されます。ホームページに接続している時は表示していますがPCに保存して見ようとするとだめです。どのようにすればよいのでしょうか。よろしくお願いいたします。

    • 締切済み
    • XML
  • XMLファイルがエラーになる

    誰かが作成した既存のXMLファイルをIEで開こうとしたら、 問題なく開けるのですが、 そのXMLファイルをテキストエディタで開いて全てコピーして、 新規のテキストファイルに貼り付けて、 拡張子を.xmlで保存してから、そのファイルを開こうとしてもエラー表示されます。 しかし、他のPCで同じ事をした場合、問題なく開けます。 一体何がまずいのでしょうか? ブラブザはIE6です。 環境はWindows XP sp2 proです。 何か必要なファイル、ドライバが足りないのでしょうか?

    • ベストアンサー
    • XML
  • XMLファイルがブラウザで開けません

    こんにちは。XMLファイルの取り扱いについてお尋ねします。 クライアントから提供されたxmlファイルがコンピュータによってブラウザで開けたり開けなかったりします。 開けない場合は、「指定されたリソースは見つかりません」という表示が出ます。このサイトでXMLファイルに関するQ&Aを見ましたが、どれが該当するのかよくわかりません。 この現象の解決策がお分かりの方、アドバイスをお願いいたします。

  • xml について

    少し聞かせてください。 今、MVC で DB から値を出力しています。 そこで質問なのですが、どのタイミングでどのように xml に書き出すかが分かりかねています。 いろいろHPを見た結果なのですが、jsp で <%@ page contentType="text/xml" %> <?xml version="1.0" encoding="SJIS"?> <name="situmon"> <actor> <f_name>goo</f_name> <l_name>osiete</l_name> </name> などとすると、ブラウザで表示されるのは分かるのですが、xmlファイルとしての書き出しが分かりません。 xml ファイル書き出しと言う言葉が適切ではないのではとも思います。 主としての目的は、 XSLT シートを利用してのブラウザ表示です。 まず最初の xml ファイルの作成の仕方を、サンプル、HPでもかまいませんので回答よろしくお願いします。 環境:win98 JRun3.0

    • ベストアンサー
    • Java
  • javaScriptからxmlファイルを読み込みたい。

    strutsで開発を行ってるのですが、javaScriptからweb.xmlに設定してあるsession-timeoutの時間を取得したいのです。 javaScriptからxmlファイルをparseできるみたいで、ネットを参考に書いてみたのですが。うまく動きません・・・以下がソースです。 jsファイルをweb.xmlと同じ階層において試したのですが 、うまく読み込めていないようなのです。どなたかご教授お願いできないでしょうか? javaScriptからweb.xmlを読み込むことは不可能なのでしょうか? ちなみにブラウザはIE6.0以上限定です。 function readXML(){ xml_doc = new ActiveXObject("Microsoft.XMLDOM"); xml_doc.async = false; if(xml_doc.load("web.xml")){ alert("success!"); }else{ alert("error!"); } }

  • FMEでxmlファイルを取り込めない

    FMEでxmlファイルを取り込めない ニコ生で高画質配信したいと思いFMEをダウンロードしました。 最初にnicovideo_fme.xmlというファイルをFMEに取り込まなくてはいけないのですが、 「Profile Validation Error」 というようにエラーが起こってしまいます。 取り込んでくれないんです。 xmlファイルはデスクトップに保存しました。 どうしたらよいのでしょうか? OS・・・win7 ブラウザ・・・IE PC・・・VAIO キャプチャーには『NDC』使ってます。

専門家に質問してみよう