2012-07-16 57 views
0

我正在使用Xml Pull Parser從URL解析某些Xml。我正在檢索節點的值沒有任何問題,但我似乎無法獲取節點名稱 - 它只是返回null。Android SDK:Xml Pull Parser - 如何獲取節點名稱

例如:

<ArtistName>Joe</ArtistName> 

我可以檢索「喬」,但不能得到什麼節點「喬」是從,所以不是返回「ARTISTNAME」,則返回null。

這裏是我的代碼:

public static void getAllXML(String url) throws 
     XmlPullParserException, IOException, URISyntaxException{ 

      Log.i("*****PARSER CALLED******","****PARSER CALLED*****"); 

     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setNamespaceAware(true); 

     XmlPullParser parser = factory.newPullParser(); 
     String tagName = parser.getName(); 
     parser.setInput(new InputStreamReader(getUrlData(url))); 
     XmlUtils.beginDocument(parser,"EventsPricePoints"); 
     int eventType = parser.getEventType(); 
     do{ 
      XmlUtils.nextElement(parser); 
      parser.next(); 
      String nodeName = parser.getName(); 
      eventType = parser.getEventType(); 
      if(eventType == XmlPullParser.TEXT){ 


      Log.i("************PARSER**********",nodeName+"....."+parser.getText()); 
      } 
     } while (eventType != XmlPullParser.END_DOCUMENT) ;  
     } 

正如你所看到的,我嘗試使用

parser.getName()

得到節點名稱,其返回null。我究竟做錯了什麼?

回答

0

documentation

Canche你的代碼

do{ 
    XmlUtils.nextElement(parser); 
    parser.next(); 
    String nodeName; 
    eventType = parser.getEventType(); 
    if(eventType == XmlPullParser.TEXT){ 
    if(nodeName!=null) { 
     Log.i("************PARSER**********","Last parsed node name="+nodeName+"....."+parser.getText()); 
    } 
    } else if(eventType == XmlPullParser.START_TAG) { 
     nodeName = parser.getName() 
    } 

} while (eventType != XmlPullParser.END_DOCUMENT) ;    
+0

這仍然返回空 – user1417302 2012-07-16 15:09:18

+0

有沒有辦法獲得非開始或結束標籤的節點名稱? – user1417302 2012-07-16 15:13:45

+0

to @ user1417302您可以保存上次創建的節點名稱。我更新了答案 – Den 2012-07-16 15:23:55

0

從改變你的XML:

<ArtistName>Joe</ArtistName> 

<ArtistName name="ArtistName">Joe</ArtistName> 

爲實現其餘的應該工作。