使用DOM4J生成XML文件

生成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();
	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值