XML 4種解析方式示例
功能分類:工具
支持平臺:Android
運行環(huán)境:Eclippse
開發(fā)語言:Java
開發(fā)工具:Eclippse
源碼大?。?3.01MB
源碼簡介
android中XML文件解析方式的一個匯總示例。
其中包括dom解析、dom4j解析、pull解析和SAX解析對示例xml文件進(jìn)行解析的具體實現(xiàn)步驟,并有詳細(xì)的注釋。該實例將xml文件解析為實體類,并通過pstView進(jìn)行展現(xiàn)。
注:其中dom4j解析需要附加類庫:dom4j-1.6.1.jar,壓縮包中給出了完整的dom4j的類庫。如果只做解析,只要引入dom4j-1.6.1.jar即可。
源碼運行截圖
源碼片段
/**android內(nèi)置了pull解析,相對dom解析來說pull更省內(nèi)存.*/
pubpc class XmlPullParserUtil {
pubpc static Arraypst<cdentity> pullParser(InputStream in){
Arraypst<cdentity> cds = null;
try {
//構(gòu)建pull解析工廠
XmlPullParserFactory factory;
factory = XmlPullParserFactory.newInstance();
//構(gòu)建pull解析器對象
XmlPullParser parser = factory.newPullParser();
//設(shè)置解析器的數(shù)據(jù)源
parser.setInput(new InputStreamReader(in));
//獲取事件,開始進(jìn)行解析
int eventType = parser.getEventType();
//將要生成的CD對象
CDEntity entity = null;
//循環(huán)遍歷xml文檔,直到遍歷到文檔末尾
while(eventType != XmlPullParser.END_DOCUMENT){
switch(eventType){
//在xml文檔開始的時候構(gòu)建Arraypst對象。
case XmlPullParser.START_DOCUMENT:
cds = new Arraypst<cdentity>();
break;
//在標(biāo)簽開始時對標(biāo)簽名進(jìn)行判斷
case XmlPullParser.START_TAG:
String name = parser.getName();
//標(biāo)簽名為CD時,構(gòu)建CD對象
if("CD".equals(name)){
entity = new CDEntity();
//如果標(biāo)簽為title,則cd肯定不為空,且獲取到的文本為cd標(biāo)題,則將cd的標(biāo)題屬性設(shè)置為title標(biāo)簽的文本
}else if("TITLE".equals(name)){
entity.setTitle(parser.nextText());
}else if("ARTIST".equals(name)){
entity.setArtist(parser.nextText());
}else if("COUNTRY".equals(name)){
entity.setCountry(parser.nextText());
}else if("COMPANY".equals(name)){
entity.setCompany(parser.nextText());
}else if("PRICE".equals(name)){
entity.setPrice(Float.parseFloat(parser.nextText()));
}else if("YEAR".equals(name)){
entity.setYear(Integer.parseInt(parser.nextText()));
}
break;
//標(biāo)簽結(jié)束后,判斷結(jié)束標(biāo)簽是什么。如果cd標(biāo)簽結(jié)束,則生成cd對象完成,應(yīng)該將其添加到Arraypst中
case XmlPullParser.END_TAG:
if("CD".equals(parser.getName())){
cds.add(entity);
}
break;
}
//循環(huán)處理結(jié)束后,需要將標(biāo)簽設(shè)置為下一個標(biāo)簽,避免無限循環(huán)
eventType = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(cds);
return cds;
}
}
</cdentity></cdentity></cdentity>