Java dom4j的使用

来源:互联网 发布:软件出口是什么产品 编辑:程序博客网 时间:2024/05/16 10:10

 本文介绍使用dom4j来处理XML。

一:使用maven引入依赖jar包

<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>

二:解析XML

思路:解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作。获取Document对象方式:

1.自己创建Document

        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("root");

其中root是根节点,可以继续添加其他节点等操作。

2.读取xml类型文本内容获取Document对象

String content = "<root>xxxxxxxxx</root>";

Document document = DocumentHelper.parseText(content);

3.读取XML文件获取Document对象

        //创建SAXReader对象
        SAXReader saxReader = new SAXReader();
        //获取Document对象
        Document read = saxReader.read(new File("xml文件路径"));

三:遍历节点的内容和属性,并放置到Map里面(注意:不支持有重复便签的xml,因为map唯一性的key值)

//遍历当前节点下的所有节点  
    public void getNodes(HashMap<String, String> map,Element node){
        System.out.println("当前节点的名称:" + node.getName());
        map.put(node.getName(), node.getTextTrim());
        //首先获取当前节点的所有属性节点  
        List<Attribute> attributes = node.attributes();  
        //遍历属性节点  
        for(Attribute attribute : attributes){
            System.out.println("属性"+attribute.getName() +":" + attribute.getValue());  
            map.put(attribute.getName(), attribute.getValue());
        }  
        //如果当前节点内容不为空,则输出  
        if(!(node.getTextTrim().equals(""))){  
             System.out.println( node.getName() + ":" + node.getText());
             map.put(node.getName(), node.getText());
        }  
        //同时迭代当前节点下面的所有子节点  
        //使用递归  
        Iterator<Element> iterator = node.elementIterator();  
        while(iterator.hasNext()){  
            Element e = iterator.next();  
            getNodes(map,e);  
        }
    }


四:增加新节点一节属性和内容(具体可以查dom4j的文档)

        Element user = root.addElement("teacher");
        user.addAttribute("id", "No1");
        user.setText("教师一");

五:保存XML

        XMLWriter writer = new XMLWriter(new FileWriter(new File("e:\\teach.xml")));
        writer.write(document);
        writer.close();



  




原创粉丝点击