現在ゲームブログランキングを表示するサイトを開発してサポートしています。その中でRSSを指定してもらって、ブログの記事を取り込むという機能を作っています。
ある日、ユーザーからブログの記事が取り込めないという障害レポートがありました。手動で取り込んでみると途中でエラーになって取り込めません。
RSSフィードのXMLファイルの取得と解析は、SimplePieというライブラリを使っています。SimplePieのサイトにあるデモページから、障害の発生するRSSのURLを指定すると、<title>の行でおかしな文字でエラーと表示されます。しかし、<title>に指定されているのは普通の文字です。エラーになる文字は含まれていません。
仕方ないので、SimplePieのコードを追ってみます。PHPのxml_parser()でエラーを吐き出していることがわかりました。
XMLファイルを直接読み込ませてみて、どの記事エラーになるかを、XMLファイルを削除しながらチェックしていきます。すると、ある記事に制御コードが含まれていました。このコードを削除すると、正常にRSSフィードを読み込みと解析が終了します。
以上、面倒なことをやっていましたが、もっと簡単にXMLファイルをチェックする方法がありました。Internet ExplorerでXMLを開くだけです。Chromeは無理矢理読み込みをしてくれて、Firefoxは途中の関係ないところで終了します。Internet Explorerは厳密にチェックをしてくれるようです。しかし、どこがおかしいかは教えてくれません。秀丸エディタのようなテキストエディタでXMLファイルを開いて探した方が早いです。
[amazonjs asin=”479735366X” locale=”JP” title=”やさしいXML 第3版”]