Fork me on GitHub

Dom4j的使用

简介

Document对象现已使用很少,但是在医疗行业还大量使用,如今大部分已使用JSON格式进行数据传输。

引入依赖

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

常用方法

1:Document DocumentHelper.createDocument()创建Document对象;
2:Element addElement(String var1)添加节点;
3:void setText(String var1)给子节点其内容;
4:Element addAttribute(String var1, String var2)添加属性及其内容;
5:List elements(String var1)获取一组节点;
6:String elementText(String var1)获取子节点其内容;
7:String attributeValue(String var1)获取其属性值;

案例

创建document对象,最终将其写入文件中

@Test
    public void DocumentCreat(){
          //创建Document对象
        Document document = DocumentHelper.createDocument();
        //添加根节点
        Element root = document.addElement("root");
        //添加子节点及其内容
        root.addElement("head").setText("1");
        Element body = root.addElement("body");
        //添加子节点
        Element element = body.addElement("list");
        Element row = element.addElement("row");
        //添加属性及其内容
        row.addAttribute("CJYLSH","123414342");
        row.addAttribute("CXM","张三");
        //添加子节点
        Element element2 = element.addElement("row");
        //添加属性及其内容
        element2.addAttribute("CJYLSH","21321342435");
        element2.addAttribute("CXM","李四");
        //再创建一个对象,利用Document的clone属性进行添加节点
        Document document2 = DocumentHelper.createDocument();
        Element list2 = document2.addElement("root").addElement("body").addElement("list").addElement("row");
        list2.addAttribute("CJYLSH","789576836");
        list2.addAttribute("CXM","王五");

        //将list2的子节点clone到document对象中
        List<Element> body1 = document2.getRootElement().element("body").element("list").elements("row");
        for (Element element1 : body1) {
            element.add((Element)element1.clone());
        }
        //将数据写入到文件中
        try{
            /** 格式化输出,类型IE浏览一样 */
            OutputFormat format = OutputFormat.createPrettyPrint();
            /** 指定XML编码 */
            format.setEncoding("utf-8");
			format.setTrimText(false) //不设置,将无法输出换行符
            /** 将document中的内容写入文件中 */
            XMLWriter writer = new XMLWriter(new FileWriter(new File("D:\\docum.txt")),format);
			writer.setEscapeText(false) //&符号就不会被转义
            writer.write(document);
            writer.close();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        System.out.println(document.asXML());
    }

从文件中读取document对象,并遍历,获取其节点及属性

@Test
    public void DocumnetRead() throws MalformedURLException, DocumentException {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("D:\\docum.txt"));
        //获取根节点
        Element rootElement = document.getRootElement();
        //获取其节点值  1
        String head = rootElement.elementText("head");
        System.out.println("head"+head);
        //获取节点
        Element body = rootElement.element("body");
        //遍历 枚举名称为row节点
        List<Element> list = body.element("list").elements("row");
        for (Element element : list) {
            //获取其属性值
            String  CJYLSH= element.attributeValue("CJYLSH");
            System.out.println(CJYLSH);
        }
    }

Gitee地址

https://gitee.com/zhuayng/foundation-study.git

posted @ 2020-07-20 23:40  晨度  阅读(304)  评论(0编辑  收藏  举报