2

私は 1 つのxmlファイルを持っており、それを解析して学生 ID と学生名のみを取得したいと考えています。

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

コード:

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

私の問題XML上記のコードを使用してファイルを解析しているとき、両方のIDs(つまりstudent-iddegree-id)を取得しているので、プルパーサーを使用し て、ファイルを解析してXMLStudent-id` のみのリストを取得する必要がありますか?

4

1 に答える 1

2

「student」に一致する開始タグが見つかったら、ブール変数 (たとえば insideStudent と呼ばれる) を true に設定します。同様に、「度」タグに遭遇したら、別の insideDegree 変数を true に設定します。終了タグがある場合は、それらを false に設定します (たとえば、終了タグがある場合は、</student>insideStudent を false に設定します)。ID タグが表示されたら、自分が学生のみの内部にいるか、学位と学生の両方の内部にいるかを確認する必要があります。何かのようなもの:

if(tag_name.equalsIgnoreCase("ID")){
    // Get student ID
    if (insideStudent && !insideDegree) {
          stud_id = parser.nextText().toString();
          Log.i("Id = ", pid);
    }
} 
于 2010-09-11T13:10:23.417 に答える