2016-04-11 83 views
0

我試圖解析下面的XML文件:XML屬性值沒有得到牽強

<current> 
<city id="1273840" name="Connaught Place"> 
<coord lon="77.22" lat="28.63"/> 
<country>IN</country> 
<sun rise="2016-04-11T00:29:24" set="2016-04-11T13:15:01"/> 
</city> 
<temperature value="308.15" min="308.15" max="308.15" unit="kelvin"/> 
<humidity value="17" unit="%"/> 
<pressure value="1010" unit="hPa"/> 

我能夠成功獲得國家標籤(「IN」)的價值,但沒有能夠得到的值屬性「值」或溫度,壓力或上述任何其他標籤的任何屬性值。我的值爲空。 以下是我寫的代碼:

protected String doInBackground(Void... params) { 
     try { 

      URL u = new URL(URL); 
      HttpURLConnection con = (HttpURLConnection) u.openConnection(); 
      con.setReadTimeout(10000); 
      con.setConnectTimeout(10000); 
      con.setRequestMethod("GET"); 
      con.setDoInput(true); 
      con.connect(); 
      InputStream i = con.getInputStream(); 
      xf = XmlPullParserFactory.newInstance(); 
      xp = xf.newPullParser(); 
      xp.setInput(i, null); 
      xp.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES,false); 
      event = xp.getEventType(); 

     } 
     catch(Exception e) 
     { 

      e.printStackTrace(); 
     } 

      while(event!=XmlPullParser.END_DOCUMENT){ 
       name=xp.getName(); 

       switch(event){ 

        case XmlPullParser.START_TAG: 
         break; 
        case XmlPullParser.TEXT: 
          text=xp.getText(); 
          break; 
        case XmlPullParser.END_TAG: 

         if(name.equals("country")){ 
          country=text; 
          break; 
         } 

         else if(name.equals("temperature")){ 
          temperature=xp.getAttributeValue(null,"value"); 
          publishProgress(temperature); 
          break; 
          } 
         else 
         break; 
         } 
       try { 
        event=xp.next(); 
       } catch (XmlPullParserException e) { 

         e.printStackTrace(); 
       } catch (IOException e) { 

        e.printStackTrace(); 
       } 
      } 

是否有人可以幫助我瞭解這裏的問題..

回答

1

如果你想要得到你應該這樣做在起始標籤的attibute價值在何處。事情,因爲這類似:

String mAttribute; 
//...... 

case XmlPullParser.START_TAG: 
mAttribute = xp.getAttributeValue(null,"value"); 
    break; 
case XmlPullParser.TEXT: 
     text=xp.getText(); 
     break; 
case XmlPullParser.END_TAG: 

    if(name.equals("country")){ 
     country=text; 
     break; 
    } 

    else if(name.equals("temperature")){ 
     temperature=mAttribute; 
     publishProgress(temperature); 
     break; 
     } 
    else 
    break; 
    } 
//..... 
+0

Thanks.this解決我很好奇,爲什麼結束標記選項不工作在你的情況下,還我存儲mattribute的值,然後在爲其分配issue..but結束標記...... – ghostrider

+1

這個<溫度值=「308.15」最小=「308.15」最大=「308.15」單位=「開爾文」/>類似於<溫度值=「308.15」最小=「308.15」最大=「308.15」 unit =「kelvin」>,你可以看到結束標記沒有任何屬性 –