DOCTYPEでXmlPullParserExceptionが発生した時の対処
2016/06/10
AndroidアプリでXMLパースをXmlPullParser使って行おうとしたのですが、XMLファイルにDOCTYPE宣言がある状態で、next()メソッドを呼び出すとXmlPullParserExceptionが発生してしまいました。
06-07 09:52:48.747 9489-9867/xxx E/xxx? org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT
@399:1 in java.io.InputStreamReader@418b8ea8)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:426)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
XMLの構文上は正しいのになぜかエラーになってしまいいろいろ試行錯誤していたのですが、結局、FEATURE_PROCESS_DOCDECLをtrueにしてnextToken()メソッドを使うようにしたら正常に動作するようになりました。