質問

私はそれを持っています 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-id, degree-id)、 それで プルパーサーを使用して、 どちらの方法で解析する必要があります XML file file onlys destuent-id`のリストを取得します ?

役に立ちましたか?

解決

「学生」に一致するスターティングタグに遭遇したら、ブール変数(たとえば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);
    }
} 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top