我有一个xml
文件,我想解析它以获得学生it和学生名。
<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-id
,degree-id
),所以使用拉式解析器 ,我应该用哪种方式来解析文件,以获得只有学生id`<代码>E 215的列表?
发布于 2010-09-11 13:10:23
当您遇到与“学生”匹配的起始标记时,将一些布尔变量(例如,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);
}
}
https://stackoverflow.com/questions/3691086
复制相似问题