`

SAX PULL解析

 
阅读更多

SAX,本地解析:

 

try {
        	SAX(getAssets().open("data.xml"));
        } catch (Exception e) {
			e.printStackTrace();
     }

 

 

public void SAX(InputStream input) throws Exception {
			SAXParserFactory spf = SAXParserFactory.newInstance();
			SAXParser sp = spf.newSAXParser();

			XMLReader xReader = sp.getXMLReader();
			XMLAdressInfo xmlAdress = new XMLAdressInfo();
			xReader.setContentHandler(xmlAdress);

			xReader.parse(new InputSource(input));
			
			//获得所有的数据
			hashMap = xmlAdress.getData();
			//获得省市对应的数据
			provinceCity = xmlAdress.getCityData();
			
			Log.d("dfdfd", ""+provinceCity.size());
		}

 

 

public class XMLAdressInfo extends DefaultHandler{
	private String characters = "";
	private HashMap<String, HashMap<String, List<String>>> hashMap ;
	private HashMap<String, List<String>> hashMapCity ;
	private List<String> list;
	private String city;
	private String province;
	private HashMap<String, List<String>> provinceCity ;
	private List<String> cityList ;
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		super.characters(ch, start, length);
		String str = new String(ch, start, length);
		str = str.replace("\n", "");
		str = str.replace("\t", "");
		characters += str.trim();
	}


	@Override
	public void startDocument() throws SAXException {
		super.startDocument();
		hashMap = new HashMap<String, HashMap<String,List<String>>>();
		
		provinceCity = new HashMap<String, List<String>>();
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		if(localName.equals("province")){
			province = attributes.getValue("name");
			hashMapCity = new HashMap<String, List<String>>();
			
			cityList = new ArrayList<String>();
		}
		
		if(localName.equals("city")){
			list = new ArrayList<String>();
			city = attributes.getValue("name");
		} 
	}


	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		super.endElement(uri, localName, qName);
		if(localName.equals("province")){
			hashMap.put(province, hashMapCity);
			
			provinceCity.put(province, cityList);
			
		}else if(localName.equals("city")){
			hashMapCity.put(city, list);
			
			cityList.add(city);
		}else if(localName.equals("district")){
			list.add(characters);
		}
		
		characters = "";
	}

	public HashMap<String, HashMap<String, List<String>>>  getData(){
		return hashMap;
	}
	
	public HashMap<String, List<String>> getCityData(){
		return provinceCity;
	}
}

 

PULL 解析:

 

        PpdAdInfo ppdAdInfo = null ;
		try {
			XmlPullParser parser = Xml.newPullParser(); 
//			XmlPullParser parser =  XmlPullParserFactory.newInstance().newPullParser();
//			parser.setInput(new StringReader(strResult));// 获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。
			parser.setInput(StringTOInputStream(strResult), "UTF-8");         
			
			int eventType = parser.getEventType();
			ppdAdInfosList = new ArrayList<PpdAdInfo>();
			
			while (eventType != XmlPullParser.END_DOCUMENT) {// 一直循环,直到文档结束
				switch (eventType) {
				case XmlPullParser.START_TAG:  
	                if (parser.getName().equals("ppdAd")) {  
	                	ppdAdInfo = new PpdAdInfo();  
	                } else if (parser.getName().equals("androidPackageName")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setAndroidPackageName(parser.getText());  
	                } else if (parser.getName().equals("clickProxyURL")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setClickProxyURL(parser.getText());  
	                } else if (parser.getName().equals("ppdCampaignId")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setPpdCampaignId(parser.getText());  
	                } else if (parser.getName().equals("productThumbnail")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setProductThumbnail(parser.getText());  
	                } else if (parser.getName().equals("productDescription")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setProductDescription(parser.getText());  
	                } else if (parser.getName().equals("productName")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setProductName(parser.getText());  
	                } else if (parser.getName().equals("rating")) {  
	                    eventType = parser.next();  
	                    ppdAdInfo.setRating(parser.getText());  
	                } 
	                break;  
				case XmlPullParser.END_TAG:  
	                if (parser.getName().equals("ppdAd")) {  
	                	ppdAdInfosList.add(ppdAdInfo);  
	                	ppdAdInfo = null;      
	                }  
	                break;  
				}
				 eventType = parser.next();  
			}

		} catch (Exception e) {
			Log.d("test", "eeee__" + e.getMessage());
			e.printStackTrace();
		}  

 

	/**  
     * 将String转换成InputStream  
     * @param in  
     * @return  
     * @throws Exception  
     */  
    public static InputStream StringTOInputStream(String in) throws Exception{  
          
        ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes("ISO-8859-1"));  
        return is;  
    } 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics