JavaEE XML DOM创建之DOM4J
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>
JavaEE XML DOM创建之DOM4J的更多相关文章
- JavaEE XML DOM解析之DOM4J
DOM解析之DOM4J @author ixenos DOM4J常用API 读取xml文档: Document doc = new SAXReader().read("xml文件" ...
- JavaEE XML DOM创建
DOM创建XML @author ixenos 1.思路: 先封装构建一颗DOM树,然后将DOM树转换成XML文件 2.三种写DOM树到XML文件的方式: 1)使用DOM(或DOM4J.JDOM) 2 ...
- JavaEE XML DOM解析
DOM解析XML @author ixenos XML解析方式(原理) a) DOM 解析树 b) SAX 流事件 DOM解析对应主流工具 i. DOM(官方) i ...
- JavaEE XML StAX创建
StAX创建XML文档 @author ixenos 1. 如果通过DOM树来创建XML文件时,发现这个DOM树没有其他用途,那么这种方式就不是很高效,这时我们可以使用StAX API直接将XML树写 ...
- PHP中利用DOM创建xml文档
DOM创建xml文档 用dom创建如下文档: <booklist> <book id="1"> <title>天龙八部</title> ...
- 使用DOM创建xml文件
使用DOM创建xml文件 创建xml的代码如下: public class CreateXML { public static void main(String[] args) { DocumentB ...
- 打造完美的xml技术解决方案(dom4j/xstream)
转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...
- XML学习笔记(2)--dom4j操作XML
1. 介绍(四种方式的比较这部分转载自:http://www.blogjava.net/xcp/archive/2010/02/12/312617.html) 1)DOM(JAXP Crimson解析 ...
- JavaEE XML XPath
JavaEE XML XPath @author ixenos XPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!需要遍历DOM树的众多节点 ...
随机推荐
- shell删除指定时间之前的文件
cat delbak.sh 1 #!/bin/sh 2 location="/root/sqlbak/" 3 find $location -mtime +30 -type f | ...
- 最初的ajax案例
----------------------原始的ajax: function guo() { var xhr if (XMLHttpRequest) { ...
- ofbiz学习笔记01--多表关联查询
不管做什么项目,肯定会用到多表关联查询数据,从网络查询得知ofbiz有三种多表关联查询方法 实现一:Screem.xml 中的 section 里,加 <action>, 加 get-re ...
- MVC文件上传与下载
MVC文件上传与下载 MVC文件上传与下载 想想自己从毕业到工作也有一年多,以前公司的任务的比较重,项目中有的时候需要用到什么东西都去搜索一下,基础知识感觉还没有以前在学校中的好.最近开始写博客,真的 ...
- 定步长的龙格库塔7(8)阶C++程序(RKF78)
定步长,可以在稍微修改之后变为变步长形式,代码如下: void rkf78c( double h, double& T, vxd& X, double& err) { int ...
- WCF订阅替换轮训
使用WCF订阅替换轮训 之前因为某些特定岗位的人不知道是不方便还是什么的原因,所以随便做了个独立于所有系统之外的邮件审批服务,功能是那些人在邮件里给待审批单据发个“同意”就自动审批通过,大致分为3部分 ...
- NHibernate:教你如何搭建数据访问层?
NHibernate:教你如何搭建数据访问层? 什么是NHibernate NHibernate 是一个基于.net 的针对关系型数据库的对象持久化类库.NHibernate 来源于非常优秀的基于Ja ...
- Dynamics CRM 多个Form显示不同的Ribbon按钮
昨天群里熊宸(Microfoft MVP)给大家分享了以“Dynamics CRM 客户端编程概况”为主题,在群里给大家做了一次精彩的分享. 一些朋友聊到了Ribbon按钮在Form上的显示问题,因为 ...
- Router
backbone库学习-Router backbone库的结构http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文的例子来 ...
- asp.net MVC实现文章的“上一篇下一篇”
由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...