Android 中使用dom的方式解析XML
2012-05-27 19:29
411 查看
1. 定义XMLDocument
用java变量声明上述文档为:
Person类:
<?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解析XML方式(三)使用DOM解析XML
- 【已解决】Android中用DOM方式解析xml时使用getElementsByTagName去获得节点结果为空
- Android使用DOM方式解析XML
- Android解析XML方式(三)使用DOM解析XML
- Android 使用Dom与SAX解析xml文档的方式
- android解析XML的三种方式(DOM,SAX,PULL)
- Android解析Xml的三种方式:DOM、SAX以及XMLPull
- android之三种方式解析xml(dom,sax,pull)
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android中使用PULL方式解析XML和XmlSerializer进行序列化
- 使用DOM方式解析XML
- android解析XML总结(SAX、Pull、Dom三种方式)
- Android 创建与解析XML(二)—— Dom方式
- androidのDOM方式解析XML
- android解析XML总结(SAX、Pull、Dom三种方式)
- android解析XML总结(SAX、Pull、Dom三种方式)
- 使用DOM、DOM4j、SAX三种方式解析XML
- android XML解析之DOM解析方式
- (五十七)android解析XML总结(SAX、Pull、Dom三种方式)
- 使用JAXP的DOM方式解析XML文档(能力工场)