ぬまろぐ

←戻る

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()メソッドを使うようにしたら正常に動作するようになりました。