Android - Pull Parser
-
02-10-2019 - |
Вопрос
У меня есть один 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
файл для получения списка только идентификатора студента` ?
Решение
Когда вы столкнулись с начальным тегом «студент», установите некоторую логическую переменную (например, называемую независимому) к true. Аналогичным образом, когда вы столкнулись с тегом «степени», установите другую переменную в рационе для True. Когда у вас есть закрывающий тег, установите их в false (например, если у вас есть </student>
Тогда вы устанавливаете SISSESTESTUEDETED на FALSE). Теперь, когда вы столкнулись с идентификационным тегом, вам просто нужно проверить, только ли вы внутри ученика или внутри степени, так и ученика. Что-то типа:
if(tag_name.equalsIgnoreCase("ID")){
// Get student ID
if (insideStudent && !insideDegree) {
stud_id = parser.nextText().toString();
Log.i("Id = ", pid);
}
}