
お世話になります。
いま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が提供しているサイトです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
(1)
その解釈で恐らく問題ないと思います。MagpieRSSは、内部で、PHPの標準関数である、xml_parse関数などを用いていて、
その関数が、不正な文字を見つけるとエラーでこけるのだと思います。
(2)
xml_parseに渡す前段階で、不正な文字を消したりする処理が必要になるかと思います。
http://dozo.matrix.jp/pear/index.php?PHP/Liblary …
こちらの記事(別のPHPの組み込みクラスでの話ですが)のように、文字コードを変更して戻したり、うまいことやらないと取得出来ないと思いますが、他者が作成したプログラムに対して追加処理を自前でかけるのは結構面倒です。
他所で、正常に取得できているサイトは、別のライブラリを使っていたり、Magpieのような組み込みのxml_parseやSimpleXML以外の、
Pear::XML_Unserializerのような、XMLをXMLとして通すのではなくて、文字列として、上から順番にガリガリ読み解くようなライブラリを使っているのかもしれません。
ちなみに、Pear::XML_RSSというRSS取得のためのライブラリもあるようです。
http://pear.php.net/manual/ja/package.xml.xml-rs …
一度別のRSSリーダーとか、探してみても良いかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 [PHP+XML]PHPで動的に出力するXMLをどのようにして読み込めばいいでしょうか?
- 2 PEAR XML_Query2XMLを利用したPHPからFlash(AS3)へのXMLデータの渡し方について。
- 3 PHP Mysqli関数でエラー情報を取得する
- 4 ★★xmlの「イコール」の部分のデータを取得するには?(php.simpleXML)★★
- 5 PHP "XML_unserialize"でXMLを配列に変換したのですが・・・
- 6 php4でxmlを取得してページに表示
- 7 xml rssの更新の有無をphpで取得するには
- 8 PHPでxmlをAPIに送信する方法(PHP5.6)
- 9 PHP5でsimple_xml_load_fileするとエラーになっちゃいます。
- 10 XMLタグ情報取得
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
PHPでfatal errorが出ても無視...
-
5
PHPで、エラーがない場合のみ画...
-
6
パースエラーとは?
-
7
MySQL コマンド失敗した場合、...
-
8
phpのrenameでエラーが出ます
-
9
PHPでのPASSWORD一致確認処理に...
-
10
PHPでクラス内のpublicでエラー...
-
11
try~catch構文は、どういうメ...
-
12
php MyAdmin のインポート
-
13
たまにエラーになる現象
-
14
@$a = $b["c"] or $a = "text";...
-
15
ある条件に当てはまったときに...
-
16
最小公倍数をPHPで求めるには
-
17
imagecolorallocate()でエラー
-
18
php5.6でsimplexml_load_string...
-
19
bindValueエラー
-
20
header("Location: ")でページ...
おすすめ情報