zoukankan      html  css  js  c++  java
  • dom4j操作xml文档

    java Dom4j解析XML文件

    标签(空格分隔):java进阶


    xml文档:

    <?xml version="1.0" encoding="UTF-8"?>  
    <四大名著>  
        <西游记 id="x001">  
            <作者>
            	<姓名>吴承恩</姓名>
            	<性别>男</性别>
            </作者>  
            <作者>吴承恩2</作者>
            <作者>吴承恩3</作者>
            <朝代>明朝</朝代>  
        </西游记>  
        <红楼梦 id="x002">  
            <作者>曹雪芹</作者>  
        </红楼梦>  
    </四大名著>  
    

    解析文档以及操作文档

    package com.cn.dom4j;
    
    import java.io.File;  
    import java.io.FileOutputStream;  
    import java.io.OutputStreamWriter;  
    import java.util.Iterator;  
    import java.util.List;  
      
    import org.dom4j.Attribute;  
    import org.dom4j.Document;  
    import org.dom4j.Element;  
    import org.dom4j.io.OutputFormat;  
    import org.dom4j.io.SAXReader;  
    import org.dom4j.io.XMLWriter;  
    import org.junit.Test;  
      
    public class Dom4jTest{  
      
        @Test
        public void test() throws Exception {  
            // 创建saxReader对象  
            SAXReader reader = new SAXReader();  
            // 通过read方法读取一个文件 转换成Document对象  
            Document document = reader.read(new File("src/com/cn/dom4j/sida.xml"));  
            //获取根节点元素对象  
            Element node = document.getRootElement();  
            //遍历所有的元素节点  
           listNodes(node);  
           
           //介绍Element中的element方法和elements方法的使用 
           elementMethod(node);
           
           
            // 获取四大名著元素节点中,子节点名称为红楼梦元素节点。  
            Element element = node.element("红楼梦");  
            //获取element的id属性节点对象  
            Attribute attr = element.attribute("id");  
            //删除属性  
            element.remove(attr);  
            //添加新的属性  
            element.addAttribute("name", "作者");  
            // 在红楼梦元素节点中添加朝代元素的节点  
            Element newElement = element.addElement("朝代");  
            newElement.setText("清朝");  
            //获取element中的作者元素节点对象  
            Element author = element.element("作者");  
            //删除元素节点  
            boolean flag = element.remove(author);  
            //返回true代码删除成功,否则失败  
            System.out.println(flag);  
            //添加CDATA区域  
            element.addCDATA("红楼梦,是一部爱情小说.");  
            // 写入到一个新的文件中  
            writer(document);  
        }  
      
        /** 
         * 把document对象写入新的文件 
         *  
         * @param document 
         * @throws Exception 
         */  
        public void writer(Document document) throws Exception {  
            // 紧凑的格式  
            // OutputFormat format = OutputFormat.createCompactFormat();  
            // 排版缩进的格式  
            OutputFormat format = OutputFormat.createPrettyPrint();  
            // 设置编码  
            format.setEncoding("UTF-8");  
            // 创建XMLWriter对象,指定了写出文件及编码格式  
            // XMLWriter writer = new XMLWriter(new FileWriter(new  
            // File("src//a.xml")),format);  
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(  
                    new FileOutputStream(new File("src/com/cn/dom4j/newsida.xml")), "UTF-8"), format);  
            // 写入  
            writer.write(document);  
            // 立即写入  
            writer.flush();  
            // 关闭操作  
            writer.close();  
        }  
      
        /** 
         * 遍历当前节点元素下面的所有(元素的)子节点 
         *  
         * @param node 
         */  
        public void listNodes(Element node) {  
            System.out.println("当前节点的名称:" + node.getName());  
            // 获取当前节点的所有属性节点  
            List<Attribute> list = node.attributes();  
            // 遍历属性节点  
            for (Attribute attr : list) {  
                System.out.println(attr.getText() + "-----" + attr.getName()  
                        + "---" + attr.getValue());  
            }  
      
            if (!(node.getTextTrim().equals(""))) {  
                System.out.println("文本内容:" + node.getText());  
            }  
      
            // 当前节点下面子节点迭代器  
            Iterator<Element> it = node.elementIterator();  
            // 遍历  
            while (it.hasNext()) {  
                // 获取某个子节点对象  
                Element e = it.next();  
                // 对子节点进行遍历  
                listNodes(e);  
            }  
        }  
      
        /** 
         * 介绍Element中的element方法和elements方法的使用 
         *  
         * @param node 
         */  
        public void elementMethod(Element node) {  
            // 获取node节点中,子节点的元素名称为西游记的元素节点。  
            Element e = node.element("西游记");  
            // 获取西游记元素节点中,子节点为作者的元素节点(可以看到只能获取第一个作者元素节点)  
            Element author = e.element("作者");  
      
            System.out.println(e.getName() + "----" + author.getText());  
      
            // 获取西游记这个元素节点 中,所有子节点名称为作者元素的节点 。  
      
            List<Element> authors = e.elements("作者");  
            for (Element aut : authors) {  
                System.out.println(aut.getText());  
            }  
      
            // 获取西游记这个元素节点 所有元素的子节点。  
            List<Element> elements = e.elements();  
      
            for (Element el : elements) {  
                System.out.println(el.getText());  
            }  
      
        }  
      
    }  
    

    字符串和xml相互转换

    package com.cn.dom4j;
    import java.io.File;  
    import java.io.FileOutputStream;  
    import java.io.OutputStreamWriter;  
      
    import org.dom4j.Document;  
    import org.dom4j.DocumentHelper;  
    import org.dom4j.Element;  
    import org.dom4j.io.OutputFormat;  
    import org.dom4j.io.SAXReader;  
    import org.dom4j.io.XMLWriter;  
    import org.junit.Test;  
      
    public class Dom4jTest2 {  
      
    	 @Test  
        public void test() throws Exception {  
      
            // 创建saxreader对象  
            SAXReader reader = new SAXReader();  
            // 读取一个文件,把这个文件转换成Document对象  
            Document document = reader.read(new File("src/com/cn/dom4j/sida.xml"));  
            // 获取根元素  
            Element root = document.getRootElement();  
            // 把文档转换字符串  
            String docXmlText = document.asXML();  
            System.out.println(docXmlText);  
            System.out.println("---------------------------");  
            // csdn元素标签根转换的内容  
            String rootXmlText = root.asXML();  
            System.out.println(rootXmlText);  
            System.out.println("---------------------------");  
            // 获取java元素标签 内的内容  
            Element e = root.element("西游记");  
            System.out.println(e.asXML());  
            System.out.println("---------------------------");  
      
        }  
      
        /** 
         * 创建一个document对象 往document对象中添加节点元素 转存为xml文件 
         *  
         * @throws Exception 
         */  
        @Test  
        public void test2() throws Exception {  
      
            Document document = DocumentHelper.createDocument();// 创建根节点  
            Element root = document.addElement("csdn");  
            Element java = root.addElement("java");  
            java.setText("java班");  
            Element ios = root.addElement("ios");  
            ios.setText("ios班");  
      
            writer(document);  
        }  
      
        /** 
         * 把一个文本字符串转换Document对象 
         *  
         * @throws Exception 
         */  
        @Test  
        public void test1() throws Exception {  
            String text = "<csdn><java>Java班</java><net>Net班</net></csdn>";  
            Document document = DocumentHelper.parseText(text);  
            Element e = document.getRootElement();  
            System.out.println(e.getName());  
            writer(document);  
        }  
      
        /** 
         * 把document对象写入新的文件 
         *  
         * @param document 
         * @throws Exception 
         */  
        public void writer(Document document) throws Exception {  
            // 紧凑的格式  
            // OutputFormat format = OutputFormat.createCompactFormat();  
            // 排版缩进的格式  
            OutputFormat format = OutputFormat.createPrettyPrint();  
            // 设置编码  
            format.setEncoding("UTF-8");  
            // 创建XMLWriter对象,指定了写出文件及编码格式  
            // XMLWriter writer = new XMLWriter(new FileWriter(new  
            // File("src//a.xml")),format);  
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(  
                    new FileOutputStream(new File("src/com/cn/dom4j/newsida2.xml")), "UTF-8"), format);  
            // 写入  
            writer.write(document);  
            // 立即写入  
            writer.flush();  
            // 关闭操作  
            writer.close();  
        }  
    }  
    
  • 相关阅读:
    白话机器学习的数学笔记系列1算法回归_一元回归+多项式回归
    使用verdaccio搭建npm私有库 pm2守护进程 nrm管理npm源
    Nginx笔记
    FileSystemResource 和 ClassPathResource 以及 ServletContextResource 获取资源用法
    ClickHouse 使用
    springboot整合nacos项目配置文件
    SpringBoot基础篇Bean之条件注入@ConditionalOnExpression
    java web项目服务端返回json结果时过滤字段为null的属性
    Navicat导出Excel格式表结构
    sql积累
  • 原文地址:https://www.cnblogs.com/snail-lb/p/6132902.html
Copyright © 2011-2022 走看看