Android - 拉解析器

时间:2010-09-11 13:02:50

标签: android xml xml-parsing android-xmlpullparser android-pullparser

我有一个xml文件,我想解析它只能获得学生ID和学生姓名。

<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文件以获取仅限Student-id的列表

1 个答案:

答案 0 :(得分:2)

当您遇到与“student”匹配的起始标记时,请将一些布尔变量(例如,名为insideStudent)设置为true。同样,当您遇到“degree”标记时,将另一个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);
    }
}