XML ファイルの内容は次のとおりです (「Teacher.xml」という名前) zhangsan 1912000 lisi 23 8000 PULL を使用して解析するためのコードXML ファイル:
import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; public class PullTry { public static void main(String[] args) { List datas = null; Teacher teacher = null; try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(new FileReader("teacher.xml")); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { String tagName = parser.getName(); switch (eventType) { case XmlPullParser.START_DOCUMENT: // 创建list datas = new ArrayList<>(); break; case XmlPullParser.START_TAG: // 创建Teacher对象 if ("teacher".equals(tagName)) { teacher = new Teacher(); } else if ("name".equals(tagName)) { teacher.setName(parser.nextText()); } else if ("age".equals(tagName)) { teacher.setAge(Integer.parseInt(parser.nextText())); } else if ("money".equals(tagName)) { teacher.setMoney(Double.parseDouble(parser.nextText())); } break; case XmlPullParser.END_TAG: // 把对象添加进List集合中 if ("teacher".equals(tagName)) { datas.add(teacher); } break; default: break; } // 将eventType指向下一步... eventType = parser.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < datas.size(); i++) { System.out.println(datas.get(i)); } System.out.println(count); } }
ここでは主に、while ループ内で XML ファイルがどのように読み取られるかを見ていきます。
最初のループ条件は、eventType !=ここには 11 個のeventType 値がありますが、最初の 5 個だけが使用されます。public static final int START_DOCUMENT = 0; public static final int END_DOCUMENT = 1; public static final int START_TAG = 2; public static final int END_TAG = 3; public static final int TEXT = 4;
System.out.println(eventType+"===第"+count+"次循环==="+tagName);
0===第1次循环===null 2===第2次循环===teachers 4===第3次循环===null 2===第4次循环===teacher 4===第5次循环===null 2===第6次循环===name 4===第7次循环===null 2===第8次循环===age 4===第9次循环===null 2===第10次循环===money 4===第11次循环===null 3===第12次循环===teacher 4===第13次循环===null 2===第14次循环===teacher 4===第15次循环===null 2===第16次循环===name 4===第17次循环===null 2===第18次循环===age 4===第19次循环===null 2===第20次循环===money 4===第21次循环===null 3===第22次循环===teacher 4===第23次循环===null 3===第24次循环===teachers Teacher [name=zhangsan, age=19, money=12000.0] Teacher [name=lisi, age=23, money=8000.0] 24
属性
にzhangsanが割り当てられます。7 番目のサイクルでは、eventType 値は 4 であり、TEXT の場合です。この時点では、tagName 値は空です。
他に何も言う必要はないようですが、すべて同じ意味です。 追記: Teacher タグが見つかるたびに (Teacher タグは子タグ、Teachers は親タグ)、オブジェクトが作成され、その中の孫タグ (名前、年齢、お金) が割り当てられます。このオブジェクトの中央の属性。
ps2: この例では、孫タグ内の終了タグは読み取られません。 (それだけです...) xbox:eventType 値が 3 であるケースは 3 つだけです。これら 3 つのケースでは、tagName 値はそれぞれ Teacher、Teacher、Teachers です。これは、ps2 が正しいことをさらに証明します...
以上がPULL を使用して XML ファイルを解析する場合のループ処理のサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。