您的位置:首页 > 移动开发 > Android开发

Android 中使用dom的方式解析XML

2012-05-27 19:29 411 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: