Android - Pull Parser
-
02-10-2019 - |
Question
J'ai un fichier xml
et je veux l'analyser pour obtenir des élèves-ids et étudiants-noms que.
<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>
Code:
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;
}
}
Mon problème :
Quand je suis l'analyse du fichier XML
à l'aide du code ci-dessus, je reçois à la fois le IDs
(c.-à-student-id
, degree-id
), de sorte que Utilisation Pull-analyseur, quelle manière je dois analyser le fichier XML
pour obtenir la liste des étudiants ne-id`
La solution
Lorsque vous rencontrez un correspondant balise de début « étudiant », définissez une variable booléenne (appelé insideStudent par exemple) à true. De même, lorsque vous rencontrez une balise « degré » défini une autre variable de insideDegree true. Lorsque vous avez une balise de fermeture, les mettre à false (par exemple si vous avez </student>
alors vous mettre insideStudent false). Maintenant, lorsque vous rencontrez une étiquette d'identification, il vous suffit de vérifier si vous êtes étudiant seulement à l'intérieur ou à l'intérieur des deux degrés et l'élève. Quelque chose comme:
if(tag_name.equalsIgnoreCase("ID")){
// Get student ID
if (insideStudent && !insideDegree) {
stud_id = parser.nextText().toString();
Log.i("Id = ", pid);
}
}