zoukankan      html  css  js  c++  java
  • dom4j工具对XML写入修改删除操作实现

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Demo1 extends Thread{
    
        public static void main(String[] args) throws DocumentException, IOException {
            //一、读取或创建一个Document对象
            Document doc = new SAXReader().read(new File("./src/contact.xml"));
    
            //二、修改Document对象内容
            
            //三、把修改后的Document对象写出到xml文档中
            //指定文件输出的位置
            FileOutputStream out = new FileOutputStream("d:/contact.xml");
            //1.创建写出对象
            XMLWriter writer = new XMLWriter(out);
    
            //2.写出对象
            writer.write(doc);
            //3.关闭流
            writer.close();
    
        }
    
    }
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Demo1 {
        public static void main(String[] args) throws DocumentException, IOException {
            Document doc = new SAXReader().read(new File("./src/contact.xml"));
            //指定文件输出的位置
            FileOutputStream out = new FileOutputStream("d:/contact.xml");
            /**
             * 1.指定写出的格式
             */
            OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
            //OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
            /**
             * 2.指定生成的xml文档的编码
             *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)
             *    结论: 使用该方法生成的xml文档避免中文乱码问题。
             */
            format.setEncoding("utf-8");
            //1.创建写出对象
            XMLWriter writer = new XMLWriter(out,format);
            //2.写出对象
            writer.write(doc);
            //3.关闭流
            writer.close();
        }
    
    }
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.*;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    import org.junit.Test;
    /**
     * 完整读取xml文档内容
    
     *
     */
    public class Demo {
    
        /**
         * 增加:文档,标签 ,属性
         */
        @Test
        public void test1() throws Exception{
            /**
             * 1.创建文档
             */
            Document doc = DocumentHelper.createDocument();
            /**
             * 2.增加标签
             */
            Element rootElem = doc.addElement("contactList");
            //doc.addElement("contactList");
            Element contactElem = rootElem.addElement("contact");
            contactElem.addElement("name");
            /**
             * 3.增加属性
             */
            contactElem.addAttribute("id", "001");
            contactElem.addAttribute("name", "eric");
    
            //把修改后的Document对象写出到xml文档中
            FileOutputStream out = new FileOutputStream("d:/contact.xml");
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            writer.write(doc);
            writer.close();
        }
    
        /**
         * 修改:属性值,文本
         * @throws Exception
         */
        @Test
        public void test2()    throws Exception{
            Document doc = new SAXReader().read(new File("./src/contact.xml"));
    
            /**
             * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值
             */
            //1.1  得到标签对象
            /*
            Element contactElem = doc.getRootElement().element("contact");
            //1.2 得到属性对象
            Attribute idAttr = contactElem.attribute("id");
            //1.3 修改属性值
            idAttr.setValue("003");
            */
            /**
             * 方案二: 修改属性值
             */
            //1.1  得到标签对象
            /*
            Element contactElem = doc.getRootElement().element("contact");
            //1.2 通过增加同名属性的方法,修改属性值
            contactElem.addAttribute("id", "004");
            */
    
            /**
             * 修改文本 1.得到标签对象 2.修改文本
             */
            Element nameElem = doc.getRootElement().
                    element("contact").element("name");
            nameElem.setText("李四");
    
    
    
            FileOutputStream out = new FileOutputStream("d:/contact.xml");
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            writer.write(doc);
            writer.close();
        }
    
    
        /**
         * 删除:标签,属性
         * @throws Exception
         */
        @Test
        public void test3() throws Exception{
            Document doc = new SAXReader().read(new File("./src/contact.xml"));
    
            /**
             * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象
             */
            // 1.1 得到标签对象
            /*
            Element ageElem = doc.getRootElement().element("contact")
                        .element("age");
    
            //1.2 删除标签对象
            ageElem.detach();
            //ageElem.getParent().remove(ageElem);
            */
            /**
             * 2.删除属性   2.1得到属性对象  2.2 删除属性
             */
            //2.1得到属性对象
            //得到第二个contact标签
            Element contactElem = (Element)doc.getRootElement().
                    elements().get(1);
            //2.2 得到属性对象
            Attribute idAttr = contactElem.attribute("id");
            //2.3 删除属性
            idAttr.detach();
            //idAttr.getParent().remove(idAttr);
    
            FileOutputStream out = new FileOutputStream("d:/contact.xml");
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            writer.write(doc);
            writer.close();
        }
    }
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Iterator;
    
    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;
    
    /**
     * 用dom4j的api来生成以下的xml文件
     <Students>
     <Student id="1">
     <name>张三</name>
     <gender>男</gender>
     <grade>土木</grade>
     <address>广州</address>
     </Student>
     <Student id="2">
     <name>李四</name>
     <gender>女</gender>
     <grade>计算机</grade>
     <address>广州</address>
     </Student>
     </Students>
    
     2.修改id为2的学生的姓名,改为“王丽”
    
     3.删除id为2的学生
    
     *
     */
    public class Demo {
    
        /**
         * 1.生成指定xml文档
         * @throws Exception
         */
        @Test
        public void test1() throws Exception{
            //1.内存创建xml文档
            Document doc = DocumentHelper.createDocument();
    
            //2.写入内容
            Element rootElem = doc.addElement("Students");
    
            //2.1 增加标签
            Element studentElem1 = rootElem.addElement("Student");
            //2.2 增加属性
            studentElem1.addAttribute("id", "1");
            //2.3 增加标签,同时设置文本
            studentElem1.addElement("name").setText("张三");
            studentElem1.addElement("gender").setText("男");
            studentElem1.addElement("grade").setText("土木");
            studentElem1.addElement("address").setText("广州");
    
            //2.1 增加标签
            Element studentElem2 = rootElem.addElement("Student");
            //2.2 增加属性
            studentElem2.addAttribute("id", "2");
            //2.3 增加标签,同时设置文本
            studentElem2.addElement("name").setText("李四");
            studentElem2.addElement("gender").setText("女");
            studentElem2.addElement("grade").setText("计算机");
            studentElem2.addElement("address").setText("广州");
    
            //3.内容写出到xml文件
            //3.1 输出位置
            FileOutputStream out = new FileOutputStream("d:/student.xml");
            //3.2 指定格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 设置编码
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            //3.3 写出内容
            writer.write(doc);
            //3.4关闭资源
            writer.close();
    
        }
    
        /**
         * 2.修改id为2的学生姓名
         * @throws Exception
         */
        @Test
        public void test2() throws Exception{
            //1.查询到id为2的学生
            Document doc = new SAXReader().read(new File("d:/student.xml"));
            //1.1 找到所有的Student标签
            Iterator<Element> it = doc.getRootElement().elementIterator("Student");
            while(it.hasNext()){
                Element stuElem = it.next();
                //1.2 查询id为id的学生标签
                if(stuElem.attributeValue("id").equals("2")){
                    stuElem.element("name").setText("王丽");
                    break;
                }
            }
            //3.1 输出位置
            FileOutputStream out = new FileOutputStream("d:/student.xml");
            //3.2 指定格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 设置编码
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            //3.3 写出内容
            writer.write(doc);
            //3.4关闭资源
            writer.close();
        }
    
        /**
         * 3.删除id为2的学生
         * @throws Exception
         */
        @Test
        public void test3() throws Exception{
            //1.查询到id为2的学生
            Document doc = new SAXReader().read(new File("d:/student.xml"));
            //1.1 找到所有的Student标签
            Iterator<Element> it = doc.getRootElement().elementIterator("Student");
            while(it.hasNext()){
                Element stuElem = it.next();
                //1.2 查询id为id的学生标签
                if(stuElem.attributeValue("id").equals("2")){
                    //1.3 删除该学生标签
                    stuElem.detach();
                    break;
                }
            }
            //3.1 输出位置
            FileOutputStream out = new FileOutputStream("d:/student.xml");
            //3.2 指定格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 设置编码
            format.setEncoding("utf-8");
            XMLWriter writer = new XMLWriter(out,format);
            //3.3 写出内容
            writer.write(doc);
            //3.4关闭资源
            writer.close();
        }
    }
  • 相关阅读:
    Docker配置mysql
    Docker中部署Redis
    Linux上docker的安装
    tomcat启动报错:To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    导出excel表格不能用ajax
    linux安装jdk
    第三次实验报告:使用Packet Tracer分析TCP连接建立过程
    第二次实验报告:使用Packet Tracer分析应用层协议
    第一次实验报告:使用Packet Tracer分析HTTP数据包
    PYTHON——多线程:队列Queue数据结构
  • 原文地址:https://www.cnblogs.com/loaderman/p/9996056.html
Copyright © 2011-2022 走看看