• java基础73 dom4j修改xml里面的内容(网页知识)


    1、DOM4J对XML文件进行增删改操作

    实现代码

      1 package com.shore.code;
      2 
      3 import java.io.File;
      4 import java.io.FileOutputStream;
      5 import java.io.IOException;
      6 
      7 import org.dom4j.Attribute;
      8 import org.dom4j.Document;
      9 import org.dom4j.DocumentHelper;
     10 import org.dom4j.Element;
     11 import org.dom4j.io.OutputFormat;
     12 import org.dom4j.io.SAXReader;
     13 import org.dom4j.io.XMLWriter;
     14 import org.junit.Test;
     15 
     16 /**
     17  * @author DSHORE / 2018-9-3
     18  *
     19  */
     20 /*
     21  * 修改xml内容
     22  * 增加:文档,标签,属性
     23  * 修改:属性值,文本
     24  * 删除:标签,属性
     25  * */
     26 public class Demo3 {
     27     /*
     28      * 增加:文档,标签,属性
     29      * */
     30     @Test
     31     public void test1() throws IOException{
     32         /*
     33          *创建文档
     34          * */
     35         Document doc=DocumentHelper.createDocument();
     36         Element rootelem=doc.addElement("contactList");
     37         Element contactElem=rootelem.addElement("contact");
     38         Element nameEle = contactElem.addElement("name");
     39         nameEle.addEntity("name", "张三");//添加实体内容
     40         Element ageEle = contactElem.addElement("age");
     41         ageEle.addComment("张三");//添加注释
     42         /*
     43          * 增加属性
     44          * */
     45         contactElem.addAttribute("id","001");
     46         contactElem.addAttribute("name","zhangsan");
     47         //1.创建输出流通道
     48         FileOutputStream out=new FileOutputStream("F:/contact.xml");
     49         //设置写入contact.xml文件的内容/标签格式(俗称:美观格式)
     50         OutputFormat format=OutputFormat.createPrettyPrint();
     51         //设置编码格式
     52         format.setEncoding("utf-8");
     53         //2.创建写出的对象,把修改后的Document对象写出到xml中
     54         XMLWriter write=new XMLWriter(out,format);
     55         //3.写出对象
     56         write.write(doc);
     57         //4.关闭资源
     58         write.close();
     59     }
     60     /*
     61      * 修改:属性值,文本
     62      * */
     63     @Test
     64     public void test2() throws Exception{
     65         //1.创建并读取一个Document对象
     66         Document doc=new SAXReader().read(new File("./src/contact.xml"));
     67         /*
     68          * 方案一:修改属性值     1.得到标签对象   2.得到属性对象    3.修改属性值   
     69          * */
     70         //2.得到标签对象
     71         Element contatcElem=doc.getRootElement().element("contact");
     72         //3.得到属性对象
     73         Attribute idAttr=contatcElem.attribute("id");
     74         //4.修改属性值
     75         idAttr.setValue("005");
     76         /*
     77          * 方案二:修改属性值
     78          * */
     79         //2.得到标签对象
     80         Element contatcElem2=doc.getRootElement().element("contact");
     81         //3.通过增加同名的属性的方法,修改属性值
     82         contatcElem2.addAttribute("id","006");
     83         /*
     84          * 修改文本:   1.得到标签    2.修改文本
     85          * */
     86         Element nameElement=doc.getRootElement().element("contact").element("name");
     87         nameElement.setText("王五");
     88         //1.创建输出流通道
     89         FileOutputStream out=new FileOutputStream("F:/contact.xml");
     90         OutputFormat format=OutputFormat.createPrettyPrint();//设置contact.xml文件格式(俗称:美观格式)
     91         format.setEncoding("utf-8");//设置编码格式
     92         //2.创建写出的对象
     93         XMLWriter write=new XMLWriter(out,format);
     94         //3.写出对象
     95         write.write(doc);
     96         //4.关闭资源
     97         write.close();
     98     }
     99     /*
    100      * 删除:标签,属性
    101      * */
    102     @Test
    103     public void test3() throws Exception{
    104         Document doc=new SAXReader().read(new File("./src/contact.xml"));
    105         /*
    106          * 删除标签:  1.得到标签      2.删除标签对象
    107          * */
    108         //得到标签
    109         Element ageElement=doc.getRootElement().element("contact").element("age");
    110         //删除标签对象
    111         //ageElement.detach();
    112         ageElement.getParent().remove(ageElement);//和上面的效果是一样的
    113         /*
    114          * 2.删除属性   1.得到属性对象    2.删除属性
    115          * */
    116         //得到属性对象
    117         //得到第二个contact标签
    118         Element contactElement=(Element)doc.getRootElement().elements().get(1);//get()里面填0代表第一个contact标签,填1代表第二contact标签。相当于数组的下标
    119         //得到属性对象
    120         Attribute idAttribute=contactElement.attribute("id");
    121         //删除属性
    122         idAttribute.detach();
    123         //idAttribute.getParent().remove(idAttribute);//和上面的效果是一样的
    124         FileOutputStream out=new FileOutputStream("F:/contact.xml");
    125         OutputFormat format=OutputFormat.createPrettyPrint();
    126         format.setEncoding("utf-8");
    127         XMLWriter write=new XMLWriter(out,format);
    128         write.write(doc);
    129         write.close();
    130     }
    131 }

    源文档(contact.xml)

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <contactList>
     3     <contact id="001" sex="男">
     4         <name>张三</name>
     5         <age>18</age>
     6         <phone>15779593710</phone>
     7         <email>872855221@qq.com</email>
     8         <qq>872855221</qq>
     9         <abc>
    10             <a>  </a>
    11         </abc>
    12     </contact>
    13     <contact id="038">
    14         <name>李四</name>
    15         <age>20</age>
    16         <phone>1314580</phone>
    17         <email>12580@qq.com</email>
    18         <qq>832144529</qq>
    19     </contact>
    20 </contactList>

    效果图

         

             

    原创作者:DSHORE

    作者主页:http://www.cnblogs.com/dshore123/

    原文出自:https://www.cnblogs.com/dshore123/p/9561848.html

    欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

  • 相关阅读:
    关于两次fork
    阻塞非阻塞与同步异步的区别
    函数调用堆栈
    数组
    64位操作系统与32位操作系统数据类型的字节数
    Redis 键(key)
    Redis 命令
    Redis 安装
    Redis 配置
    MongoDB 安装
  • 原文地址:https://www.cnblogs.com/dshore123/p/9561848.html
Copyright © 2020-2023  润新知