Android 解析XML之一 DOM

来源:互联网 发布:淘宝如何申请退款 编辑:程序博客网 时间:2024/06/05 20:59

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 blocke.printStackTrace();}catch(IOException e){e.printStackTrace();}catch(Exception e){e.printStackTrace();}return siteList;}

效果:



原创粉丝点击