2012年5月23日水曜日

XMLParseに失敗しちゃう

WebAPIからXMLを取得して解析しようとしたら
以下のようなエラーが発生しちゃいました。

org.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG <item> //…(以下略)

特定のスタートタグ(以下の例"target")でnextText()メソッドを用いて取得しようとしたのですが、
このnextText()がダメだったようです。
(参考サイト様:http://yome9.blogspot.jp/2012/03/xmlpullparserxml.html)

while(true){
 eventType = parser.next();

 if(eventType == XmlPullParser.START_TAG
  && "target".equals(startTag)){
  text = parser.nextText();
 }
}

(例)
<nesting>
 <target>...</target>
</nesting>
XmlPullParserが<nesting>を指してるときにnextTextを取得しようとすると、
次がタグ(<target>)になってしまうのがまずいのでしょうか…?

しかし、取得元のXMLを見る限りだと私が欲しい情報は最も入れ子になっている要素なので
上記の条件には当てはまらないはずなのですよ…うーん、わからない…。
それとも事前に上記のようなことが起こらないようにエラーを吐くようにしてるのでしょうか。

うーん、見当違いな事書いているような…下手に自論をひねり出そうとするからですね。
反省反省…。もうちょっと確証もてるような事が浮かんだら書き直そう。


仕方ないので以下のように変更して回避しましたー

while(true){
 if(eventType == XmlPullParser.START_TAG){
  String startTag = parser.getName();
  if("telop".equals(startTag)) getText = true;
 }
 else if(getText && eventType == XmlPullParser.TEXT){
  text = parser.getText();
  getText = false;
  break;
 }
}

ううん…要調査です。

0 件のコメント:

コメントを投稿