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`

Était-ce utile?

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);
    }
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top