Frage

Ich habe eine xml Datei und ich möchte analysieren es Schüler-IDs und Schüler-Namen zu bekommen nur.

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

Mein Problem : Wenn ich die XML Datei bin Parsen des obigen Code, ich bin beides immer die IDs (dh student-id, degree-id), so Mit Pull-Parser, die Art und Weise, ich sollte die XML Datei zu erhalten Liste von nur Schüler-id`

War es hilfreich?

Lösung

Wenn Sie ein Start-Tag matching "Student" begegnen, setzen einige boolean Variable auf true (insideStudent zum Beispiel genannt). Ebenso, wenn Sie setzen andere insideDegree Variable auf true ein „Grad“ Tag begegnen. Wenn Sie ein End-Tag haben, setzen sie auf false (z, wenn Sie </student> haben, dann setzen Sie insideStudent auf false). Nun, wenn Sie einen ID-Tag begegnen, müssen Sie nur überprüfen, ob Sie nur innerhalb Student sind oder in beiden Grad und Schüler. So etwas wie:

if(tag_name.equalsIgnoreCase("ID")){
    // Get student ID
    if (insideStudent && !insideDegree) {
          stud_id = parser.nextText().toString();
          Log.i("Id = ", pid);
    }
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top