2

我有一個xml文件,我想解析它以獲得Student-ids和學生名稱。Android - Pull Parser

<students> 
    <student> 
     <id type="integer">101</id> 
     <name>James</name> 
     <degree> 
      <id type="integer">1978271</id> 
      <name>SCJP</name> 
     </degree> 
    </student> 
    <student> 
     <id type="integer">102</id> 
     <name>Joseph</name> 
     <degree> 
      <id type="integer">1978272</id> 
      <name>MCST</name> 
     </degree> 
    </student> 
</students> 

代碼:

while (eventType != XmlPullParser.END_DOCUMENT) { 
    parser.next(); 
    eventType = parser.getEventType(); 
    switch (eventType){ 
    case XmlPullParser.START_TAG: 
     tag_name = parser.getName(); 
     if(tag_name.equalsIgnoreCase("ID")){ 
       stud_id = parser.nextText().toString(); 
       Log.i("Id = ", pid); 
      } else if (tag_name.equalsIgnoreCase("name")){ 
       stud_name = parser.nextText().toString(); 
      } 
      break; 
    } 
} 

我的問題: 當我使用上面的代碼解析XML文件,我得到兩個IDs(即student-iddegree-id),所以使用Pull-parser,哪種方式我應該解析XML文件以獲得只有學生ID列表#

回答

2

當您遇到與「student」匹配的開始標記時,請將某個布爾變量(例如,稱爲insideStudent)設置爲true。同樣,當您遇到「度數」標記時,將另一個insideDegree變量設置爲true。當你有結束標記時,將它們設置爲false(例如,如果你有</student>,那麼你將insideStudent設置爲false)。現在當你遇到一個ID標籤時,你只需要檢查你是否只在學生內部或在學位和學生內部。就像這樣:

if(tag_name.equalsIgnoreCase("ID")){ 
    // Get student ID 
    if (insideStudent && !insideDegree) { 
      stud_id = parser.nextText().toString(); 
      Log.i("Id = ", pid); 
    } 
} 
+0

對於你的回答遲到抱歉,我已經這樣做了,我宣佈整數變量使他們0和1開始/結束標記。感謝您的支持 – 2010-09-14 06:51:22