真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用PULL解析XML文件時循環(huán)過程的案例-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)使用PULL解析XML文件時循環(huán)過程的案例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,志丹網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:志丹等地區(qū)。志丹做網(wǎng)站價格咨詢:028-86922220

XML文件內(nèi)容如下(名字為"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:
// 創(chuàng)建list
datas = new ArrayList<>();
break;
case XmlPullParser.START_TAG:
// 創(chuàng)建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:
// 把對象添加進(jìn)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循環(huán)內(nèi)部是如何讀取xml文件的..

首先循環(huán)的條件是eventType != XmlPullParser.END_DOCUMENT

如果eventType不等于XmlPullParser.END_DOCUMENT,就進(jìn)行下一次循環(huán)。這里eventType的值有11種,但用到的只有前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;

為了觀察循環(huán)執(zhí)行的過程,我在循環(huán)內(nèi)添加了一行代碼:

System.out.println(eventType+"===第"+count+"次循環(huán)==="+tagName);

其中count是循環(huán)運(yùn)行的次數(shù)。添加這行代碼后控制臺顯示出如下信息:

0===第1次循環(huán)===null 
2===第2次循環(huán)===teachers 
4===第3次循環(huán)===null 
2===第4次循環(huán)===teacher 
4===第5次循環(huán)===null 
2===第6次循環(huán)===name 
4===第7次循環(huán)===null 
2===第8次循環(huán)===age 
4===第9次循環(huán)===null 
2===第10次循環(huán)===money 
4===第11次循環(huán)===null 
3===第12次循環(huán)===teacher 
4===第13次循環(huán)===null 
2===第14次循環(huán)===teacher 
4===第15次循環(huán)===null 
2===第16次循環(huán)===name 
4===第17次循環(huán)===null 
2===第18次循環(huán)===age 
4===第19次循環(huán)===null 
2===第20次循環(huán)===money 
4===第21次循環(huán)===null 
3===第22次循環(huán)===teacher 
4===第23次循環(huán)===null 
3===第24次循環(huán)===teachers Teacher [name=zhangsan, age=19, money=12000.0] Teacher [name=lisi, age=23, money=8000.0] 24

先說一下,只有在下一次eventType值為4(也即下一次循環(huán)時讀取了TEXT)的情況下,讀取的內(nèi)容parser.nextText()不為空

結(jié)合xml文件來看,可以得出結(jié)論:

第一次循環(huán),eventType值為0,也即START_DOCUMENT的情況。此時tagName值為空。

第二次循環(huán),eventType值為2,也即START_TAG的情況。此時tagName值為teachers。也就是說此時讀取到了這個標(biāo)簽。由于下一次eventType值為4,也即TEXT的情況,所以此次讀取的內(nèi)容parser.nextText()值為標(biāo)簽到標(biāo)簽中間的文本內(nèi)容!也就是一個/n加一個/t。

第三次循環(huán),eventType值為4,也即TEXT的情況。此時tagName值為空。

第四次循環(huán),eventType值為2,也即START_TAG的情況。此時tagName值為teacher。也就是說此時讀取到了這個標(biāo)簽。注意:此時if語句判斷出"teacher".equals(tagName)返回值為true,會執(zhí)行下面的teacher = new Teacher();來創(chuàng)建一個Teacher類的對象。由于下一次eventType值為4,也即TEXT的情況,所以此次讀取的內(nèi)容parser.nextText()值為標(biāo)簽到標(biāo)簽中間的文本內(nèi)容,也就是一個/n加兩個/t。

第五次循環(huán),eventType值為4,也即TEXT的情況。此時tagName值為空。

第六次循環(huán),eventType值為2,也即START_TAG的情況。此時tagName值為name。也就是說此時讀取到了這個標(biāo)簽。注意:此時if語句判斷出"name".equals(tagName)返回值為true,會執(zhí)行下面的teacher.setName(parser.nextText());,這里的parser.nextText()值應(yīng)該是zhangsan。這樣就把zhangsan賦值給了這個teacher對象的name屬性。

第七次循環(huán),eventType值為4,也即TEXT的情況。此時tagName值為空。

后面好像不用講什么了,都是一個意思。

ps: 每一次遇到一個Teacher標(biāo)簽(Teacher標(biāo)簽是一個子標(biāo)簽,Teachers是父標(biāo)簽)都會創(chuàng)建一個對象,接著把里面的孫標(biāo)簽(name、age和money)賦值到這個對象的屬性中。

ps2: 這個例子中孫標(biāo)簽中的endtag不會被讀取。(就是這種..)

xbox: eventType值為3的情況只有三種,這三種情況下tagName值分別為teacher、teacher和teachers。進(jìn)一步說明了ps2是對的.....

感謝各位的閱讀!關(guān)于“使用PULL解析XML文件時循環(huán)過程的案例”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


文章標(biāo)題:使用PULL解析XML文件時循環(huán)過程的案例-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/jgeod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部