iTunes Store RSSにハマる

とある案件で、「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側で修正していただきたいです。