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);
                }
            }
        }
    }
posted @   帅气好男人_jack  阅读(2)  评论(0编辑  收藏  举报  
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示