dom解析xml

来源:互联网 发布:wifi跑字典软件 编辑:程序博客网 时间:2024/06/07 07:39

dom是一种用于XML文档对象模型,可用于直接访问xml文档的各个部分,在DOM中文档模拟为树状,其中xml语法的每一个组成部分都表示一个节点,DOM允许用户遍历文档树,从父节点移动到子节点;操作简单,方便

由于dom是直接将整个xml文件导入进来,所有对内存资源也是一个不小的冲击,所有,DOM只适合那小小型的文档解析,在对大型文档解析的时候要格外注意

以Person的xml文件为例读取:

<persons>    <person id="1">        <name>jackZhous</name>        <age>10</age>    </person>    <person id="2">        <name>Taylor</name>        <age>20</age>    </person></persons>

java代码读取:

    public void DomXML(String uri) throws Exception{        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();          //获取dom工厂类        DocumentBuilder builder = factory.newDocumentBuilder();                 //获取dom解析器        Document document = builder.parse(uri);                                 //使用dom技术将文档转换为                                                                     一个document树状对象        Element element =  document.getDocumentElement();               //获取文档标签        NodeList personList = element.getElementsByTagName("person");       //以person标签分割为list        //读取每个具体的person内容  并把它加入list        for(int i = 0; i < personList.getLength() ; i++){            Element person = (Element) personList.item(i);            Person p = new Person();            p.setId(Integer.parseInt(person.getAttribute("id")));            NodeList childList = person.getChildNodes();            for(int j = 0; j < childList.getLength() ; j++){                if(childList.item(j).getNodeType() == Node.ELEMENT_NODE){                    if("name".equals(childList.item(j).getFirstChild().getNodeName())){                        p.setName(childList.item(j).getFirstChild().getNodeValue());                    }else if("age".equals(childList.item(j).getFirstChild().getNodeName())){                        p.setAge(Integer.parseInt(childList.item(j).getFirstChild().getNodeValue()));                    }                    list.add(p);                }            }        }    }
0 0
原创粉丝点击