増子良太のブログです

増子良太が書いているブログです。テーマをしぼらず、思いついたものをただひたすら書いていきます。

AndroidのXMLPullParserで問題発生

      2016/01/28

こんばんは!rmascoです

Androidの開発やっていて、xmlをパースしたい時にみなさんはどんなモジュールを使用しますか?
今回は使用するのに簡単そうなXMLPullParserを選択してみました。

ただ、XMLPullParserを使っていて、一つだけハマったことがありました。

それは空タグ(空要素: <value />)が入っていると、そこでパースエラーになることです。

xmlrpcで通信して、xmlをパースしてなんてことをやっていて、
今までは普通にxmlをパースできていたので、すごく楽だななんて思っていたんです。

で、追加でMetaWeblog.getCategoriesを読んでみたら、エラーで落ちました。

E/ERRLOG(279): message: org.xmlpull.v1.XmlPullParserException: expected: START_TAG {null}value (position:END_TAG </value>@1:407 in java.io.InputStreamReader@43e6a5a8) 

最初はXMLが原因かと思い、返って来たXMLをバリデーションとかにかけてみたけどどう見ても正常。人間が見ても正常。

もうダメだと思った時に、@1:407って文字が気になりました。
これってXMLの行:列じゃないか・・・

さっそく407行目をみると、

<value />

これかーーーーーーーーーーー!

ネットでも同じようなことで悩んでる人もいるみたい。
わかりづらいです。

問題はここから。

サーバ側の処理は変更できない

どうしたものか。。。

やっぱり置換するしかないかあ〜 

 - Android