Domanda

io sto avendo un unico file xml e voglio analizzarlo per ottenere Student-ID e studenti-nomi solo.

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

Codice:

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

Il mio problema : Quando sto l'analisi del file XML utilizzando il codice di cui sopra, sto ottenendo sia il IDs (cioè student-id, degree-id), in modo da Uso Pull-parser, in che modo avrei dovuto analizzare il file XML ottenere l'elenco di un solo studente-id`

È stato utile?

Soluzione

Quando si incontra un tag corrispondente "studente" di partenza, impostare una variabile booleana (chiamata insideStudent per esempio) su true. Allo stesso modo, quando si incontra un tag "grado" impostare un'altra variabile insideDegree su true. Quando si dispone di un tag di chiusura, li impostato su false (ad esempio, se si dispone di </student> allora impostare insideStudent false). Ora, quando si incontra un tag ID, è sufficiente verificare se si è solo all'interno studente o all'interno sia di grado e studente. Qualcosa di simile:

if(tag_name.equalsIgnoreCase("ID")){
    // Get student ID
    if (insideStudent && !insideDegree) {
          stud_id = parser.nextText().toString();
          Log.i("Id = ", pid);
    }
} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top