当前位置:编程学习 > XML/UML >>

Android[中级教程]第七章 XML解析之Dom解析器

 

接上一章,这一章我们介绍Dom解析,因为Dom是J2EE中用得比较多的解析器,这里解析方法跟J2EE方法是一样的,具体的样式跟以下这篇文章中的样式是一样的

 

 

<?xml version="1.0" encoding="UTF-8"?> 

<persons> 

    <person id = "1"> 

        <status>大徙弟</status> 

        <name>孙悟空</name> 

        <tool>金箍棒</tool> 

        <number>杀死了50只妖怪</number> 

    </person> 

     

    <person id = "2"> 

        <status>二徙弟</status> 

        <name>猪八戒</name> 

        <tool>九齿钉耙</tool> 

        <number>杀死了40只妖怪</number> 

    </person> 

     

    <person id = "3"> 

        <status>三徙弟</status> 

        <name>沙和尚</name> 

        <tool>降妖宝杖</tool> 

        <number>杀死了30只妖怪</number> 

    </person> 

 

</persons> 

其他数据或样式请看以下教程

Android[中级教程]第五章XML解析之PULL解析器

 我们来看解析处的代码:

 

 

import java.io.InputStream; 

import java.util.ArrayList; 

import java.util.List; 

 

import javax.xml.parsers.DocumentBuilder; 

import javax.xml.parsers.DocumentBuilderFactory; 

 

import org.w3c.dom.Document; 

import org.w3c.dom.Element; 

import org.w3c.dom.Node; 

import org.w3c.dom.NodeList; 

 

public class DomHandler 

    private InputStream input; 

    private List<Person> persons; 

    private Person person; 

     

    public DomHandler() 

    { 

    } 

     

    public DomHandler(InputStream input) 

    { 

        this.input = input; 

    } 

 

    public void setInput(InputStream input) 

    { 

        this.input = input; 

    } 

     

    public List<Person> getPersons(){ 

         

        persons = new ArrayList<Person>(); 

        try  

        { 

            //通过Dom工厂方法建立Dom解析器 

            DocumentBuilder builder =DocumentBuilderFactory.newInstance().newDocumentBuilder(); 

            Document document = builder.parse(input); 

            Element element = document.getDocumentElement(); 

             

            //取得节点<person>的节点列表 

            NodeList personNodes =element.getElementsByTagName("person"); 

            //节点长度 

            int length = personNodes.getLength(); 

            for(int i = 0; i < length; i++){ 

                //取得<person>的节点元素 

                Element personElement = (Element)personNodes.item(i); 

                person = new Person(); 

                //取得<person id="1">中的id属性值 

                person.setId(personElement.getAttribute("id")); 

                 

                //继续向下,取得子节点列表,如<status><name>等等 

                NodeList childnodes = personElement.getChildNodes(); 

                int len = childnodes.getLength(); 

                for(int j = 0 ; j < len ; j++){ 

                    //如果子节点是一个元素节点 

                    if(childnodes.item(j).getNodeType() == Node.ELEMENT_NODE){ 

                        //取得节点名称 

                        String nodeName = childnodes.item(j).getNodeName(); 

                        //取得节点值 

                        String nodeValue = childnodes.item(j).getFirstChild().getNodeValue(); 

                        if("status".equals(nodeName)){ 

                       &nbs

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,