2016-09-08 33 views
0

我并不完全了解XMLParsing,因此我是XMLParsing的初学者。我正在使用XMLPull分析器。我如何能够第二次识别相同的XML标签

我想在下面的XML中存储玩家一和玩家二。我如何识别playertag?

<scores sport="tennis"> 
<category name="Atp - Doubles: Us Open (Usa), Hard" city="Us Open" id="11987"> 
<match date="08.09.2016" time="19:00" status="Not Started" id="396388"> 
<player name="Herbert/ Mahut" s1="" s2="" s3="" s4="" s5="" totalscore="" id="22079"/> 
<player name="Murray/ Soares" s1="" s2="" s3="" s4="" s5="" totalscore="" id="33098"/> 
</match> 
<match date="08.09.2016" time="20:30" status="Not Started" id="396400"> 
<player name="Lopez/ Lopez" s1="" s2="" s3="" s4="" s5="" totalscore="" id="9632"/> 
<player name="Carreno-Busta/ Garcia-Lopez" s1="" s2="" s3="" s4="" s5="" totalscore="" id="22770"/> 
</match> 
</category> 
</scores> 

这里是我的代码

public List<LiveScore> parse(InputStream is) { 
     try { 

      String tournament = null,tournament_place = null,date = null,time = null,status = null,player_one = null,player_two; 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser parser = factory.newPullParser(); 

      parser.setInput(is, null); 

      liveScoreArrayList = new ArrayList<LiveScore>(); 

      int eventType = parser.getEventType(); 
      while (eventType != XmlPullParser.END_DOCUMENT) { 
       String tagname = parser.getName(); 
       switch (eventType) { 
        case XmlPullParser.START_TAG: 

         if ("category".equals(tagname)){ 

          tournament = parser.getAttributeValue(null,"name"); 
          tournament_place = parser.getAttributeValue(null,"city"); 

         } 

         if ("match".equals(tagname)){ 

          date = parser.getAttributeValue(null,"date"); 
          time = parser.getAttributeValue(null,"time"); 
          status = parser.getAttributeValue(null,"status"); 

         } 

         break; 

        case XmlPullParser.TEXT: 

//      text = parser.getText(); 
//      Log.i(TAG, "parse: text: "+text); 

         break; 

        case XmlPullParser.END_TAG: 

         if ("player".equals(tagname)){ 

          player_one = parser.getAttributeValue(null,"name"); 

         } 



         Log.d("LiveMatch", "parse: category : "+tournament+" city = "+tournament_place+" date = "+date+ " time = "+time+" status = "+status+" player_one = "+player_one); 

//      rankList.add(new Rank(rank,player_name+" \n"+country,points)); 


         break; 

        default: 
         break; 
       } 
       eventType = parser.next(); 
      } 

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

     return liveScoreArrayList; 
    } 

回答