2011-11-15 16 views
0

"temp.gpx"という名前のXMLファイルを内部ストレージに作成しました。私はこのメソッドを解析し、GPS座標と他のものを取得する必要があります。 DOCUMENT_STARTが検出されましたが(そのLog.d行が書き込まれます)、次にどの例外が発生しているのかを知ることなく、例外が発生しています。内部メモリに格納されたXMLを解析する

例外は「ウィンドウを追加できません:トークンnullはアプリケーション用ではありません」です。 Log.d(TAG、 "next")は書き込まれません。

private void procesarGPX() throws XmlPullParserException, IOException { 

    String tag = new String(); 
    float lat, lon; 
    trackData = new TrackData(true, true); 

    FileInputStream leerFichero = getApplicationContext().openFileInput("temp.gpx"); 

    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    factory.setNamespaceAware(true); 
    XmlPullParser xpp = factory.newPullParser(); 
    xpp.setInput(leerFichero, null); 

    int eventType = xpp.getEventType(); 
    while (eventType != XmlPullParser.END_DOCUMENT){ 
     if(eventType == XmlPullParser.START_DOCUMENT){ 
      Log.d(TAG, "START_DOC"); 
     } 
     else if(eventType == XmlPullParser.START_TAG){ 
      Log.d(TAG, "START_TAG"); 
      tag = xpp.getName(); 
      if(tag.equals("name")) boolName = true; 
      else if(tag.equals("trkpt")){ 
       lat = Float.parseFloat(xpp.getAttributeValue(null, "lat")); 
       lon = Float.parseFloat(xpp.getAttributeValue(null, "lon")); 
       if(lat*(-1)<=180 && lon*(-1)<=180) trackData.addPoint(new GeoPoint((int)(lat*1E6), (int)(lon*1E6))); 
      } 
      else if(tag.equals("ele")) boolEle = true; 
      else if(tag.equals("time")) boolTime = true; 
      else if(tag.equals("gpx")){ 
       Log.d(TAG, "START_TAG es del tipo gpx"); 
       trackData.setAutor(xpp.getAttributeValue(null, "creator")); 
       trackData.setVersion(xpp.getAttributeValue(null, "version")); 
      } 
     } 
     else if(eventType == XmlPullParser.END_TAG){ 
      Log.d(TAG, "END_TAG"); 
      if(tag.equals("name")) boolName = false; 
      else if(tag.equals("ele")) boolEle = false; 
      else if(tag.equals("time")) boolTime = false; 
     } 
     else if(eventType == XmlPullParser.TEXT){ 
      Log.d(TAG, "TEXT"); 
      if(boolName) trackData.setName(xpp.getText()); 
      else if(boolEle) trackData.addElevationValue(Float.parseFloat(xpp.getText())); 
      else if(boolTime) parseTime(xpp.getText()); 
     } 
     eventType = xpp.next();Log.d(TAG, "next()"); 
    } 

    Log.d(TAG, "GPX processed"); 

    Intent mapaIntent = new Intent(this, pfc.uniovi.MapaActivity.class); 
    startActivity(mapaIntent); 
} 

答えて

0

コードが正しい。多くのデバッグの後、最初の行が依然としてXML行でないときにクラッシュすることがわかりました。あなたがXML行だけを渡すことを心配する限り、コードは機能します。私はコードを必要とする誰もがそれを得るように答えを受け入れるでしょう

関連する問題