IT Rescue IT関連Tips情報

bidders/ビッダーズ Webサービスが返すXMLでパースエラー

2006年10月30日WEB2.0/SEO/SEM

biddersが提供するアフィリエイト2.0Webサービス(A2WS)を使ったときの問題について.
A2WS利用するとアフィリエイト2.0に参加する企業の商品データをXMLデータとして取得できます.

商品詳細情報の取得ができるようになりましたにあるように,商品詳細情報もXMLで取得できるようになりました.

ところが,この商品詳細情報を出力するオプションを使うとXMLパーサが「invalid token」とエラーメッセージを出し,パースできないという現象が出始めました.XMLのパースにはPython2.4.2 とElementTreeを使っています.

調査してみると,商品詳細情報を表すタグ<ItemComment>~</ItemComment>の末尾に^Q, ^P等の制御コードの文字が含まれている事が原因らしい.必ず末尾に含まれることから,日本語などの2バイト(?)コードの1バイト目だけ残っている状態のようだ.

これでは目的が達成できないので,あれこれ苦心した結果末尾の制御コードを正規表現で取除くという,やや強引な解決方法でしのいだ.

以下そのコード:

import re
xml = re.sub(r'[x00-x1F]s*</ItemComment>', r'</ItemComment>', xml)

とりあえず,これで何とかなっている.

参考にパースエラーの出るXMLを出力するURLの例を示しておく.
http://ws.a20.jp/bin/aws?prog=3476&sort=sum,D&ipp=100&page=3&cmt=Y
商品が追加されると,エラーが出なくなるかもそのときはpage=<nn>ってパラメータを追加してみてください.
Firefox1.5.0.7でアクセスするとFirefoxに内蔵(?)のXMLパーサが次のようなエラーメッセージを出しました.

XML パースエラー: 整形式になっていません。
URL: http://ws.a20.jp/bin/aws?prog=3476&sort=sum,D&ipp=100&page=3&cmt=Y
行番号: 94, 列番号: 259:

2007/7/14 修正:
エラーの出るURLを(わざわざ)見つけた.エラーメッセージも修正した.(ぼくって意地悪)


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。