dom解析xml

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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气好男人_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值