【工程截图】

【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();
//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();
}

最新文章

  1. 核心动画(CAKeyframeAnimation)
  2. manifest资源提取工具
  3. js模板引擎
  4. php面向对象_get(),_set()的用法
  5. Android中焦点移到ListView的有关问题
  6. java 24点算法实现
  7. Oracle使用%rowtype变量存储一行数据
  8. java应用测试报告生成(二):利用ant的build.xml生成测试报告
  9. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”
  10. Java学生成绩
  11. LxNx前端F2F面试问题整理
  12. Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式
  13. LNMP架构之搭建wordpress博客网站
  14. android官方技术文档翻译——aar 格式
  15. linux内核参数注释与优化
  16. iOS 自定义一个常规的TabBar
  17. 移动端适配——font-size计算
  18. System.ServiceModel.AddressAccessDeniedException
  19. ASP.NET的生命周期
  20. Es6构造函数的变身,通常我们称为类

热门文章

  1. java 学习基础学习单词及java关键词
  2. Learn_Dynamic
  3. linux makefile: c++ 编程_基础入门_如何开始?
  4. MongoDB命令学习
  5. C++ 外部调用private方法
  6. Android 如何修改默认的searchable items。
  7. android 删除文件以及递归删除文件夹
  8. 实现android activity之间的跳转
  9. android学习日记26--AIDL之进程间的通信
  10. SAP进销存难点分析及对策