Pregunta

Estoy teniendo un archivo xml y quiero analizarlo para obtener Student-ID y los nombres de los estudiantes-solamente.

<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>

Código:

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;
     }
} 

Mi Problema Cuando estoy analizar el archivo XML utilizando el código anterior, que estoy recibiendo tanto la IDs (es decir student-id, degree-id), por lo que Uso de Pull-analizador, ¿qué camino he analizar el archivo XML obtener la lista de único estudiante-id`

¿Fue útil?

Solución

Cuando se encuentre con una etiqueta a juego "estudiante" de partida, establecida alguna variable booleana (llamado insideStudent por ejemplo) a la verdadera. Del mismo modo, cuando se encuentra con una etiqueta de "grado" establece otra variable insideDegree true. Cuando usted tiene una etiqueta de cierre, que se pone a falso (por ejemplo, si usted tiene </student> entonces establecer insideStudent a falso). Ahora, cuando se encuentra con una etiqueta de identificación, sólo tiene que comprobar si estás sólo en el interior del estudiante o en el interior tanto de grado y el estudiante. Algo así como:

if(tag_name.equalsIgnoreCase("ID")){
    // Get student ID
    if (insideStudent && !insideDegree) {
          stud_id = parser.nextText().toString();
          Log.i("Id = ", pid);
    }
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top