とある案件で、「iTunes Store RSSからアプリのランキング情報のXMLを得て、サイトに表示する」という処理を作りました。
その際にハマったことがあったので、紹介します。
PHPでパースするとエラーが出ることがある
今回は、PHPを使ってXMLをパースし、ランキングを出力するようにしました。
XMLのパースには、PHP5標準のDOMDocumentクラスを使いました。
ところが、iTunes Store RSSのXMLをいろいろと試してみると、XMLのパースの際にエラーが発生することがありました。
Ctrl+Sが混入している
XMLを保存してテキストエディタで開き、XML内でエラーになった行をよく見てみると、アプリの要約の文章(summary要素)に、Ctrl+Sコード(文字コード19番)が混入していることが分かりました。
このCtrl+Sのために、PHPが「XMLに不正な文字コードがある」と判断して、エラーを出力していました。
そこで、XMLをパースする前に、正規表現を使ってXMLからCtrl+Sを削除するようにしました。
これで、XMLのパースを正しく行えるようになりました。
iTunes Store RSSの不具合だと思いますので、ぜひApple側で修正していただきたいです。






![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)



コメントする