06_XML的写入_dom4j添加、删除、修改Xml文件内容

【工程截图】

【person.xml】准备一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student id="88888" phone="15888888888" sex="男">
        <name>张三</name>
        <age>18</age>
        <school>清华</school>
    </student>
    <student id="99999" phone="15999999999" sex="女">
        <name>李四</name>
        <age>28</age>
        <school>北大</school>
    </student>
    <AAAA>
        <aa1>aa111</aa1>
        <aa2>aa222</aa2>
    </AAAA>
    <BBBB></BBBB>
</students>

【读取原有Xml文件的内容,然后将数据写入到磁盘上】

package com.Higgin.dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 *  读出原有xml文件的内容数据,然后将数据写入到磁盘上的XML文件
 */
public class WriteDemo01 {

    public static void main(String[] args) throws DocumentException, IOException {
        //读取已存在的Xml文件person.xml
        Document doc=new SAXReader().read(new File("./src/person.xml"));

        //指定文件输出的位置
        FileOutputStream out =new FileOutputStream("d:/student.xml");

        //1.创建写出对象
       XMLWriter writer=new XMLWriter(out);

       //2.写出Document对象
       writer.write(doc);

       //3.关闭流
       writer.close();
    }
}

【运行结果】内容和person.xml一致

【按照设定的格式将xml内容输出保存到对应的磁盘地址上】

package com.Higgin.dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 *  1.读出原有xml文件的内容数据,保存至Document对象
 *  2.修改输出的format(输出格式、编码...)
 *  3.然后将document包含数据写入到磁盘上的XML文件
 */
public class WriteDemo02 {

    public static void main(String[] args) throws DocumentException, IOException {
        //读取已存在的Xml文件person.xml
        Document doc=new SAXReader().read(new File("./src/person.xml"));

        //指定文件输出的位置
        FileOutputStream out =new FileOutputStream("d:/student.xml");
        /**
         *  指定文本的写出的格式:
         *      紧凑格式 :项目上线时候使用
         *      漂亮格式:开发调试的时候使用
         */
        //OutputFormat format=OutputFormat.createCompactFormat();  //紧凑格式:去除空格换行
        OutputFormat format=OutputFormat.createPrettyPrint();   //漂亮格式:有空格换行

        /**
         * 指定生成的xml文档的编码影响了:
         *         1.xml文档保存时的编码
         *         2.xml文档声明的encoding编码(Xml解析时的编码)
         * 结论:使用该方法生成Xml文档可以避免中文乱码问题
         */
        format.setEncoding("UTF-8");

        //1.创建写出对象
       XMLWriter writer=new XMLWriter(out,format);

       //2.写出Document对象
       writer.write(doc);

       //3.关闭流
       writer.close();
    }
}

【运行结果】

同样在D盘下生成了一个student.xml文件

 1.紧凑格式:

2.漂亮格式

3.注意:

/**
* 指定生成的xml文档的编码影响了:
* 1.xml文档保存时的编码
* 2.xml文档声明的encoding编码(Xml解析时的编码)
* 结论:使用该方法生成Xml文档可以避免中文乱码问题
*/

增、删、改 Xml文件

/**
* 1.创建Document对象,
* 添加:各种标签、属性、文本
* 修改:属性值、文本
* 删除:标签、属性
* 2.修改输出的format(输出格式、编码...)
* 3.然后将document包含数据写入到磁盘上的XML文件
*/

【增加:文档、标签、属性】

    /**
     * 增加:文档、标签、属性
     */
    @Test
    public void testAdd() throws DocumentException, IOException {
        //1.创建文档
        Document doc=DocumentHelper.createDocument();
        //2.添加标签
        Element rootElem=doc.addElement("root");
        Element stuElem=rootElem.addElement("student");
        stuElem.addElement("name");
        //4.增加属性
        stuElem.addAttribute("id", "88888");
        stuElem.addAttribute("sex", "男");
        //指定文件输出的位置
        FileOutputStream out =new FileOutputStream("d:/student.xml");

        // 指定文本的写出的格式:
        OutputFormat format=OutputFormat.createPrettyPrint();   //漂亮格式:有空格换行
        format.setEncoding("UTF-8");

        //1.创建写出对象
        XMLWriter writer=new XMLWriter(out,format);

        //2.写出Document对象
        writer.write(doc);

        //3.关闭流
        writer.close();
    }

【运行结果】

【修改:属性值、文本】

    /**
     * 修改:属性值、文本
     */
    @Test
    public void testUpdate() throws DocumentException, IOException{
        //创建Document对象,读取已存在的Xml文件person.xml
        Document doc=new SAXReader().read(new File("./src/person.xml"));

        /**
         * 修改属性值(方案一) 
         * 方法:使用Attribute类(属性类)的setValue()方法
         * 1.得到标签对象
         * 2.得到属性对象
         * 3.修改属性值
         */
    /*    //1.1 得到标签对象
        Element stuElem=doc.getRootElement().element("student");
        //1.2 得到id属性对象
        Attribute idAttr=stuElem.attribute("id");
        //1.3 修改属性值
        idAttr.setValue("000001");
    */

        /**
         *  修改属性值(方案二)
         *  方法:Element标签类的addAttribute("attr","value")方法
         */
    /*    //1.得到属性值标签
        Element stuElem=doc.getRootElement().element("student");
        //2.通过增加同名属性的方法,修改属性值
        stuElem.addAttribute("id", "000009");  //key相同,覆盖;不存在key,则添加
     */
        /**
         * 修改文本
         * 方法:Element标签类的setTest("新文本值")方法
         * 1.得到标签对象
         * 2.修改文本
         */
        Element nameElem=doc.getRootElement().element("student").element("name");
        nameElem.setText("王二麻子");

        //指定文件输出的位置
        FileOutputStream out =new FileOutputStream("d:/student.xml");
        // 指定文本的写出的格式:
        OutputFormat format=OutputFormat.createPrettyPrint();   //漂亮格式:有空格换行
        format.setEncoding("UTF-8");
        //1.创建写出对象
        XMLWriter writer=new XMLWriter(out,format);
        //2.写出Document对象
        writer.write(doc);
        //3.关闭流
        writer.close();
    }

【删除:标签、属性】

    /**
     * 删除:标签、属性
     */
    @Test
    public void testDelete() throws DocumentException, IOException{
        //创建Document对象,读取已存在的Xml文件person.xml
        Document doc=new SAXReader().read(new File("./src/person.xml"));

        /**
         * 删除标签
         * 1.得到标签对象
         * 2.删除标签对象(可以通过父类删除子标签,也可以自己删自己)
         */
/*        Element ageElement=doc.getRootElement().element("student").element("age");
         ageElement.detach();  //直接detch()删除
        //ageElement.getParent().remove(ageElement); //先获取父标签,然后remove()删除子标签
*/
        /**
         * 删除属性
         */
        //1.得到标签对象
        //等同于Element stuElem=doc.getRootElement().element("student");
        Element stuElem=(Element) doc.getRootElement().elements().get(0);
        //2.得到属性对象
        Attribute idAttr=stuElem.attribute("id");
        //3.删除属性
        idAttr.detach();

        //指定文件输出的位置
        FileOutputStream out =new FileOutputStream("d:/student.xml");
        // 指定文本的写出的格式:
        OutputFormat format=OutputFormat.createPrettyPrint();   //漂亮格式:有空格换行
        format.setEncoding("UTF-8");
        //1.创建写出对象
        XMLWriter writer=new XMLWriter(out,format);
        //2.写出Document对象
        writer.write(doc);
        //3.关闭流
        writer.close();
    }

原文地址:https://www.cnblogs.com/qianqiu-1026/p/8856081.html

时间: 2024-11-03 22:15:50

06_XML的写入_dom4j添加、删除、修改Xml文件内容的相关文章

[libxml2]_[XML处理]_[使用libxml2的xpath特性修改xml文件内容]

场景: 1.在软件需要保存一些配置项时,使用数据库的话比较复杂,查看内容也不容易.纯文本文件对utf8字符支持也不好. 2.这时候使用xml是最佳选择,使用跨平台库libxml2. 3.基于xpath的保存方式对保存局部内容非常方便. 4.参考例子xpath2.c 1 #include <stdio.h> 2 #include <assert.h> 3 #include <string> 4 #include <iostream> 5 #include &l

JTree 添加 , 删除, 修改

package com.swing.demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.CellEdi

用SQL语句添加删除修改字段

1.增加字段     alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型     ALTER TABLE table_name     ALTER COLUMNcolumn_name new_data_type4.sp_rename 改名     EXEC sp_rename '[dbo].[Table_1].[filedName1]

用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 4.sp_rename 改名 更改当前数据库中用户创建对象(如表.列或用户定义数据类型)的名称. 语法 sp_rename

对表格单元格的添加删除修改

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作

html代码: <!--添加/删除/修改 --> <div id="a1"> <button id="a2" onclick="add()">add</button> </div> <div id="a3"> <button onclick="del()">del</button> </div> &l

Android修改XML文件

最近在项目中需要使用XML记录数据,网上这方面的文章较少,记录一下 使用DOM方式 [java] view plaincopy /** * 追加内容到XML文档 * @param instructions * @throws ParserConfigurationException * @throws SAXException * @throws IOException * @throws TransformerException */ public void append2XML(String

Java操作读取写入文本TXT及XML文件内容

package fileIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class ReadTextFile { public BufferedReader bufread; public BufferedWriter bufwriter; File

myeclipse修改xml文件字体大小

myeclipse中怎么修改xml文件的字体大小呢?网上搜了很多,得到的答案基本都是: window--preferences--General--appearance--colors   and   fonts--basic--text font 其实这项只能修改java文件的字体大小,并不能修改xml文件的字体,如果要修改xml文件字体大小,点击 修改这项!