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;
 }
}

ううん…要調査です。

2012年5月18日金曜日

作りたいよライブ壁紙

ライブ壁紙を作りたいので計画をメモしていく。

【作りたいもの】天気予報に連動したライブ壁紙(ペ●ソナ4の天気予報風)
・天気情報を取得できるAPIから天気予報を取得して表示させると同時に、
天気・日付に連動したアニメーションを入れる。
・もしも情報を取得できない場合は天気予報の欄は全部曇り(霧)とし、
情報取得失敗を表すアニメーションを入れる。
⇒霧条件:WiFiがONになってない/HTTPのGET失敗
・ライブ壁紙の設定によってノーマル/マガツバージョンに切り替えられる

作る宣言、大事。