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