Android - Pull Parser
У меня есть один xml
файл, и я хочу разобрать его, чтобы получить только идентификаторы учеников и имена учеников.
<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
), так что, используя Pull-parser, я должен разобрать XML
файл, чтобы получить список только Student-ID`?
1 ответ
Когда вы встречаете начальный тег, соответствующий "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);
}
}