XML解析--PULL

来源:互联网 发布:js ajax同步和异步的 编辑:程序博客网 时间:2024/06/03 06:07

XML解析----PULL

一、第一步 :查看XML文件,是什么编码格式,还有里面的标签结构
例子:month.xml 
<?xml version="1.0" encoding="GBK"?><year><month id="1" shop="myshop" price="8000.00">1</month><month id="2" shop=" myshop " price="9000.00">2</month><month id="3" shop=" myshop " price="7000.00">3</month><month id="4" shop=" myshop " price="8000.00">4</month><month id="5" shop=" myshop " price="7800.00">5</month><month id="6" shop=" myshop " price="7800.00">6</month><month id="7" shop=" myshop " price="7900.00">7</month><month id="8" shop=" myshop " price="7900.00">8</month><month id="9" shop=" myshop " price="7000.00">9</month><month id="10" shop=" myshop " price="7800.00">10</month><month id="11" shop=" myshop " price="11000.00">11</month><month id="12" shop=" myshop " price="4500.00">12</month></year>

二、第二部: 看到标签只有<year><month> ,应该建立一个Month类
package com.cxh.monthSAXPUL;public class Month {private int id;private String shop;private double price;private int month;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getShop() {return shop;}public void setShop(String shop) {this.shop = shop;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}@Overridepublic String toString() {return "Month [id=" + id + ", month=" + month + ", price=" + price+ ", " + (shop != null ? "shop=" + shop : "") + "]";}}



三、导入pull解析的jar包,建立一个MonthPull类
package com.cxh.monthSAXPUL;import java.io.FileInputStream;import java.util.ArrayList;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserFactory;public class MonthPull{public static void main(String[] args) throws Exception {//建立解析工厂XmlPullParserFactory factory=XmlPullParserFactory.newInstance();//建立连接XmlPullParser parser=factory.newPullParser();//这是找到文件位置,以及编码格式(一定要和xml编码一致)parser.setInput(new FileInputStream("src/month.xml"), "GBK");int type=parser.getEventType();   Month month=null;;ArrayList<Month> months=null;String qName="";while(type!=XmlPullParser.END_DOCUMENT){switch(type){case XmlPullParser.START_TAG:qName=parser.getName();if(qName.equals("year")){months=new ArrayList<Month>();}else if(qName.equals("month")){month=new Month();int id=Integer.parseInt(parser.getAttributeValue(0));String shop=parser.getAttributeValue(1);double price=Double.parseDouble(parser.getAttributeValue(2));month.setId(id);month.setShop(shop);month.setPrice(price);}break;case XmlPullParser.TEXT:if(qName.equals("month")){int mon=Integer.parseInt(parser.getText());month.setMonth(mon);}break;case XmlPullParser.END_TAG:qName="";if(parser.getName().equals("month")){months.add(month);}break;default:break;}type=parser.next();}for (Month month2 : months) {System.out.println(month2);}}}

这就ok了,把获取的内容放在对象里,再放到集合里。



0 0
原创粉丝点击