KXmlPerse.next()でエラーが発生する問題について

683 views
Skip to first unread message

ざき

unread,
Mar 4, 2012, 8:41:07 PM3/4/12
to 日本Androidの会
初めまして。
ざき といいます。

以前にnoxi様が投稿されたICSのXmlPullPerser.nest()でエラーが発生する問題につきまして、
詳細な原因が分かりましたので投稿させていただきます。

また、noxi様の投稿につきましては以下をご参照ください。
【ICSのXmlPullParserの挙動について】
http://groups.google.com/group/android-group-japan/browse_thread/thread/72ae776e97acfe1b

結論から言いますと、KXmlParserではxmlファイルにBOM(Byte Order Mark)が入っていると
それが判定できずにエラーとなります。
BOMを取り除いたところ、正常に動くことが確認できました。

Android3.xまでのExpatPullPerserではBOMが入っていてもエラーは起こりません。
そのため、3.2までは正常に動作していたのに、4.x(KXmlParserに変わった)ではエラーが発生する、
という現象が起こるようです。

以下、参考までにそのエラーが発生した際に出力されるエラーメッセージです。
------------------------------------------------------------------------------------------------------------------------------------
xmlPullparserException
org.xmlpull.v1.XmlPullParserException: Unexpected token
(position:TEXT ?@1:2 in java.io.InputStreamReader@41aa63a8)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:426)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)



------------------------------------------------------------------------------------------------------------------------------------

また、xmlファイルからBOMを取り除いても、一度端末からアプリをアンインストールしないと
xmlファイルが更新されないという現象が起こりましたので(eclipseから「実行」しています。)、
BOMを修正しても問題が解決されないという方がいましたら、一度アプリを端末からアンインストールしてみると解決するかもしれません。
Reply all
Reply to author
Forward
0 new messages