Android -Pullパーサー
-
02-10-2019 - |
質問
私はそれを持っています 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);
}
}
所属していません StackOverflow