Android-拉解析器
-
02-10-2019 - |
题
我有一个 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
(IE student-id
, degree-id
), 所以 使用Pull-Parser, 我应该以哪种方式解析 XML
文件以获取仅学生ID的列表 ?
解决方案
当您遇到与“学生”匹配的启动标签时,将一些布尔值变量(例如,称为Insidestudent)设置为true。同样,当您遇到“学位”标签时,将另一个IndiendEgree变量设置为true。当您有关闭标签时,将它们设置为false(例如,如果您有 </student>
然后,您将内部访问者设置为false)。现在,当您遇到ID标签时,您只需要检查您是否仅在学生和学位和学生中。就像是:
if(tag_name.equalsIgnoreCase("ID")){
// Get student ID
if (insideStudent && !insideDegree) {
stud_id = parser.nextText().toString();
Log.i("Id = ", pid);
}
}
不隶属于 StackOverflow