DOM4J创建xml文档
@author ixenos
1 写出内容到xml文档
XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
wirter.write(Document);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
// 生成xml文件
File file = new File("rssnews.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
//设置是否转义,默认值是true,代表转义
writer.setEscapeText(false);
writer.write(document);
writer.close();
2 修改xml文档的API
增加:
DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addAttribute("名称",“值”) 增加属性
修改:
Attribute.setValue("值") 修改属性值
//addAttribute为标签添加属性和属性值。根据XML约定,若value为null,则attr属性不存在,这可用于删除属性
Element.addAtribute("同名的属性名","值") 修改同名的属性值
Element.setText("内容") 修改文本内容
删除
Element.detach(); 删除标签
Attribute.detach(); 删除属性
示例
package com.ixenos.dom4j; 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.XMLWriter; /** * 使用DOM4J的API生成XML文件 * * @author ixenos * */ public class CreateXML { /** * 封装DOM树 * * @param file * @throws Exception */ public Document getDOM() throws Exception { // 生成一个空的Document对象 Document doc = DocumentHelper.createDocument(); // 手动装入标签、属性、文本 // 根标签 Element rootE = doc.addElement("Students"); // 第一个子标签 Element firE = rootE.addElement("Student"); firE.addAttribute("id", "1"); // 第一个子标签的子 firE.addElement("name").addText("张三"); firE.addElement("gender").addText("男"); firE.addElement("grade").addText("物联网一般"); firE.addElement("address").addText("广州白云"); // 第二个子标签 Element secE = rootE.addElement("Student"); secE.addAttribute("id", "2"); // 第一个子标签的子 secE.addElement("name").addText("李四"); secE.addElement("gender").addText("女"); secE.addElement("grade").addText("物联网二班"); secE.addElement("address").addText("广州海珠"); return doc; } /** * 将DOM树输出为XML文件 * * @throws Exception */ public static void writeXML(Document doc, Boolean pretty, String encoding) throws Exception { // 创建文件输出流,定向所要生成的文件路径 FileOutputStream out = new FileOutputStream("demo.xml"); // 创建OutputFormat,作为写到XML的格式化选项 // 为了调试可视化,我们需要OutputFormat.createPrettyPrint() // 为了传输的高效化,我们需要Outputormat.create.createCompactFormat() OutputFormat format = null; if (pretty) { format = OutputFormat.createPrettyPrint(); } else { format = OutputFormat.createCompactFormat(); } // 设置XML文件指定编码 format.setEncoding(encoding); // 创建XMLWriter,将DOM树写到XML中,注意格式化问题 XMLWriter writer = new XMLWriter(out, format); writer.write(doc); writer.close(); } public static void main(String[] args) throws Exception { CreateXML demo = new CreateXML(); //生成DOM树 Document doc = demo.getDOM(); //根据DOM树生成XML writeXML(doc, true, "utf-8"); } }
<?xml version="1.0" encoding="utf-8"?> <Students> <Student id="1"> <name>张三</name> <gender>男</gender> <grade>物联网一般</grade> <address>广州白云</address> </Student> <Student id="2"> <name>李四</name> <gender>女</gender> <grade>物联网二班</grade> <address>广州海珠</address> </Student> </Students>