Android 解析XML之一 DOM

websites.xml:

<?xml version="1.0" encoding="utf-8"?>
<websites>
<website id="0" src="http://www.google.com.hk">谷歌</website>
<website id="1" src="http://www.qq.com">腾讯</website>
<website id="2" src="http://www.sina.com.cn">新浪</website>
<website id="3" src="http://www.taobao.com">淘宝</website>
</websites>


每条记录对应的基类:

package com.demo.xml;

public class Site {

	private String id;
	private String src;
	private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getSrc() {
		return src;
	}
	public void setSrc(String src) {
		this.src = src;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
}

对应的解析函数:

    //针对Dom方式解析
    private List<Map<String,String>> getDomData(){
    	List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    	InputStream stream = getResources().openRawResource(R.raw.websites);
    	List<Site> siteList = getSiteList(stream);
    	for(int i =0; i < siteList.size(); i++){
    		Map<String,String> map = new HashMap<String,String>();
    		Site site = siteList.get(i);
    		map.put("id",site.getId());
    		map.put("src",site.getSrc());
    		map.put("name", site.getName());
    		list.add(map);
    	}
    	return list;
    }
    public List<Site> getSiteList(InputStream inStream){
		
		List<Site> siteList = new ArrayList<Site>();
		//得到 DocumentBuilderFactory对象,由该对象可以得到 DocmentBuilder对象
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		
		try { 
			DocumentBuilder builder = factory.newDocumentBuilder();//DocumentBuilder 对象
			Document doc = builder.parse(inStream);//包含整个xnl内容的 Document对象
			Element root = doc.getDocumentElement();//得到 根节点
			NodeList websites = root.getElementsByTagName("website");//获取根节点下 所有的 website 节点
			
			for(int i =0; i< websites.getLength(); i++){ //遍历
				Site site = new Site();
				Element e = (Element)websites.item(i);
				site.setId(e.getAttribute("id"));
				site.setSrc(e.getAttribute("src"));
				site.setName(e.getFirstChild().getNodeValue()); 
				siteList.add(site);
			}
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}
		return siteList;
	}
	

效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值