Android 中使用dom的方式解析XML

1. 定义XMLDocument

 

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="23">
		<name>李明</name>
		<age>30</age>
	</person>
	<person id="20">
		<name>李向梅</name>
		<age>25</age>
	</person>
</persons>


用java变量声明上述文档为:

private String xmlText ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><persons><person id=\"23\"><name>李明</name><age>30</age></person><person id=\"20\"><name>李向梅</name><age>25</age></person></persons>";


 

List<Person> persons = new ArrayList<Person>(); 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try
        {
        	InputStream is = new ByteArrayInputStream(xmlText.getBytes("UTF-8"));
        	DocumentBuilder builder = factory.newDocumentBuilder(); 
        	Document dom = builder.parse(is);
        	Element root = dom.getDocumentElement(); 
        	NodeList items = root.getElementsByTagName("person");//查找所有person节点
        	for (int i = 0; i < items.getLength(); i++) {
        		Person person = new Person(); 
        		Element personNode = (Element) items.item(i);
        		person.setId(new Integer(personNode.getAttribute("id")));
        		NodeList childsNodes = personNode.getChildNodes();
        		for (int j = 0; j < childsNodes.getLength(); j++) {
        			Node node = (Node) childsNodes.item(j); //判断是否为元素类型
        			if(node.getNodeType() == Node.ELEMENT_NODE){
        				Element childNode = (Element) node;
        				if ("name".equals(childNode.getNodeName())) {
        					person.setName(childNode.getFirstChild().getNodeValue()); 
        				}
        				else if("age".equals(childNode.getNodeName()))
        				{
        					person.setAge(new Short(childNode.getFirstChild().getNodeValue()));
        				}
        			}
        		}
        		persons.add(person); 
        	}
        }
        catch (Exception e) { 
        	e.printStackTrace(); 
    	}
        // 解析完毕,下面为测试代码
        String names = "";
        for(int i=0;i<persons.size();i++)
        	names+=persons.get(i).getName();
        
		new AlertDialog.Builder(this).setTitle("Hint").setMessage(names).setPositiveButton("OK", null).show();


 

Person类:

class Person { 
	private Integer id; 
	private String name; 
	private Short age; 
	
	public Integer getId() { 
		return id; 
	} 

	public void setId(Integer id) { 
		this.id = id; 
	} 

	public String getName() { 
		return name; 
	} 

	public void setName(String name) { 
		this.name = name; 
	} 

	public Short getAge() { 
		return age; 
	} 
	
	public void setAge(short age) { 
		this.age=age;
	} 
}


 

你可能感兴趣的:(android,exception,String,Integer,Class,encoding)