生成XMLW文件需要获取Document对象,获取该对象有2种方式:
(1)
通过读取原有的
xml
文件获取
document
对象
SAXReader
saxReader
=
new
SAXReader();
Document document =
saxReader
.read(
new
File(
"data.xml"
));
(2)通过DocumentHelper
创建一个
document
对象
//创建一个根节点
Element rootElement = DocumentHelper.createElement("书架");
//创建的document对象.
Document document = DocumentHelper.createDocument(rootElement);
除此之外,还需要通过XMLWriter来完成写入操作.
下面分别通过Demo来演示
package dom4j;
import java.io.File;
import java.io.FileOutputStream;
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;
/**
* 读取目标xml的document生成xml文件 相当于copy了一个document
* 你可以对该document进行扩充和修改
*
* @author mChenys
*
*/
public class WriteCopy {
public static void main(String[] args) throws Exception {
// 读取源xml文件获取一个document对象。
SAXReader saxReader = new SAXReader();
Document source = saxReader.read(new File("./src/person.xml"));
// 获取到Document对象后,就可以操作Element了
// 获取根标签
Element rootEle = source.getRootElement();
// 添加一个person子标签
Element personEle = DocumentHelper.createElement("person");
// 添加一个属性
personEle.addAttribute("id", "330");
// 添加一个name子标签
Element nameEle = DocumentHelper.createElement("name");
// 添加标签值
nameEle.setText("王五");
// 将name标签添加到person标签中
personEle.add(nameEle);
// 将person标签添加到根标签中
rootEle.add(personEle);
// 创建xml输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置xml输出编码格式
format.setEncoding("gbk");
// 使用XMLWriter对象生成一个xml文件
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("./src/copy_person.xml"), format);
// 把document写出到目标文件上
xmlWriter.write(source);
// 关闭资源
xmlWriter.close();
}
}
package demo2;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* 手动创建document生成xml文件
*
* @author mChenys
*
*/
public class CreateXml {
public static void main(String[] args) throws IOException {
// 创建一个根标签
Element rootEle = DocumentHelper.createElement("书架");
// 根据根节点创建的document对象.
Document document = DocumentHelper.createDocument(rootEle);
// 在根节点上添加子标签。
Element bookEle = rootEle.addElement("书");
// 继续添加孙标签
bookEle.addElement("名字").setText("三国演义");
bookEle.addElement("价钱").setText("43.8");
bookEle.addElement("出版社").setText("清华出版社");
// 如果需要指定文档声明的encoding编码表,那么需要创建一个xml输出的格式器
// 漂亮的格式 平时查看文件的时候使用的。
OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
// 紧凑的格式 这种格式一般用于网络传输数据的时候使用。
// OutputFormat compactFormat = OutputFormat.createCompactFormat();
// 指定文档声明的encoding
prettyPrint.setEncoding("gbk");
// 使用document生成xml文件
FileWriter fileWriter = new FileWriter("books.xml");
XMLWriter xmlWriter = new XMLWriter(fileWriter, prettyPrint);
xmlWriter.write(document);
// 关闭资源
xmlWriter.close();
}
}