采用技术:dom4j

需要jar包:dom4j-1.6.1.jar

主类如下----

public class dom4jTestXML {

/**

*

* 方法描述:读取XML文件示例 备 注:

* 创 建 人: bo.gaobo

* 修改日期: @2013-8-20

*/

public static void readXML() {

SAXReader sr = new SAXReader();// 获取读取xml的对象。

try {

Document doc = sr.read("src/Noname1.xml");// 得到xml所在位置。然后开始读取。并将数据放入doc中

Element el_root = doc.getRootElement();// 向外取数据,获取xml的根节点。

System.out.println("根节点:" + el_root.getName());

Iterator it = el_root.elementIterator();// 从根节点下依次遍历,获取根节点下所有子节点

while (it.hasNext()) {// 遍历子节点

Object o = it.next();

Element el_row = (Element) o;

String str = el_row.getText();

Iterator it_row = el_row.elementIterator();

while (it_row.hasNext()) {

Element el_ename = (Element) it_row.next();

System.out.println(el_ename.getName() + "="

+ el_ename.getData());

}

}

} catch (DocumentException e) {

e.printStackTrace();

}

}

/**

*

* 方法描述:写入XML文件并存储 备 注:

* 创 建 人: bo.gaobo

* 修改日期: @2013-8-20

*/

public static void writeToXML() {

Row row1 = new Row();

row1.setCo("co_1");

row1.setComm("comm_1");

row1.setDepno("depno_1");

row1.setEmpno("empno_1");

row1.setEname("ename_1");

row1.setMgr("mgr_1");

row1.setHiredate("2012-03-29");

row1.setJob("job_1");

row1.setSal("sal_1");

Document document = DocumentHelper.createDocument();

Element root = document.addElement("ROWDATA");

Element row = root.addElement("ROW");

row.addElement("CO").addText(row1.getCo());

row.addElement("EMPNO").addText(row1.getEmpno());

row.addElement("ENAME").addText(row1.getEname());

row.addElement("JOB").addText(row1.getJob());

row.addElement("MGR").addText(row1.getMgr());

row.addElement("HIREDATE").addText(row1.getHiredate());

row.addElement("SAL").addText(row1.getSal());

row.addElement("COMM").addText(row1.getComm());

row.addElement("DEPTNO").addText(row1.getDepno());

String filePath = "D:/xmlTest/" + getNowDay() + "/";

String fileName = "row1.xml";

String xmlStr = "";

xmlStr = document.asXML();

try {

Document dcmt = DocumentHelper.parseText(xmlStr);

saveDocumentToFile(dcmt, filePath, fileName, true, "UTF-8");

} catch (DocumentException e) {

e.printStackTrace();

}

}

public static String getNowDay() {

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

return format.format(new Date());

}

/**

* 方法描述:存储完整XML文件.

* 备 注:

* 创 建 人: zyl

* 创建日期:2013-3-18

*

* @param document

* @param xmlFilePath

* @param xmlFileName

* @param isTrimText

* @param xmlEncoding

*/

public static void saveDocumentToFile(Document document,

String xmlFilePath, String xmlFileName, boolean isTrimText,

String xmlEncoding) {

if (document == null || xmlFilePath == null || "".equals(xmlFileName)) {

return;

}

File file = new File(xmlFilePath);

// 判断路径是否存在,不存在创建

if (!file.exists()) {

file.mkdirs();

}

// 保存文件

OutputFormat format = null;

if (isTrimText) {

format = OutputFormat.createPrettyPrint();

} else {

format = DomXmlOutputFormat.createPrettyPrint();// 保留xml属性值中的回车换行

}

if (xmlEncoding != null) {

format.setEncoding(xmlEncoding);// GBK

} else {

format.setEncoding("UTF-8");// UTF-8

}

try {

org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(

new FileOutputStream(xmlFilePath + xmlFileName), format);// FileOutputStream可以使UTF-8生效

xmlWriter.write(document);

xmlWriter.close();

} catch (IOException e) {

System.out.println("保存XML异常:" + e.getMessage());

System.out.println("正在保存的文件名是:" + xmlFileName);

}

// 存到文件中结束

}

public static void main(String args[]) {

//  readXML();

writeToXML();

}

}

class Row {

private String co;

private String empno;

private String ename;

private String job;

private String mgr;

private String hiredate;

private String sal;

private String comm;

private String depno;

public String getCo() {

return co;

}

public void setCo(String co) {

this.co = co;

}

public String getEmpno() {

return empno;

}

public void setEmpno(String empno) {

this.empno = empno;

}

public String getEname() {

return ename;

}

public void setEname(String ename) {

this.ename = ename;

}

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

public String getHiredate() {

return hiredate;

}

public void setHiredate(String hiredate) {

this.hiredate = hiredate;

}

public String getSal() {

return sal;

}

public void setSal(String sal) {

this.sal = sal;

}

public String getComm() {

return comm;

}

public void setComm(String comm) {

this.comm = comm;

}

public String getDepno() {

return depno;

}

public void setDepno(String depno) {

this.depno = depno;

}

public String getMgr() {

return mgr;

}

public void setMgr(String mgr) {

this.mgr = mgr;

}

}

主类结束----

辅助类,重写了createPrettyPrint()方法----

import org.dom4j.io.OutputFormat;

/**

* 类 描 述:dom4j输出格式化.

* 备      注:

* 创  建   人: yanlei.zhao

* 创建日期: 2011-12-1

*/

public class DomXmlOutputFormat extends OutputFormat {

/**

* 方法描述:dom4j输出格式化..

* 备          注: 保存Document到xml文件时,xml属性中的回车换行需要保留,

*    可是发现在使用过程中发现dom4j自动把回车换行去掉了。特写此类

* 创  建   人: yanlei.zhao

* 创建日期: 2011-12-1

* @return

*/

public static OutputFormat createPrettyPrint() {

OutputFormat format = new OutputFormat();

format.setIndentSize(2);

format.setNewlines(true);

format.setTrimText(false); // 覆盖 父类的  format.setTrimText(true);

format.setPadText(true);

return format;

}

}

辅助类结束----

示例XML文件----

1

7891

sdffff

job

mgr

2010-1-1

5000.00

1000.00

deptno

2

7369

SMITH

CLERK

7902

1980-12-17

800.00

comm

20

示例文件结束----

java 读 xml_Java读写XML代码示例相关推荐

  1. 用c语言做RFID读卡程序,2.STM32读卡号读写数据代码示例3.0(C语言)

    文件名大小更新时间 2.STM32读卡号读写数据代码示例3.0(C语言)\HFRFID.uvgui.WEIZAI736912016-07-15 2.STM32读卡号读写数据代码示例3.0(C语言)\H ...

  2. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  3. java短信发送接口代码示例demo分享

    适用类型:适用于各类办公系统.ERP.CRM.电子商务平台的插件(如网站app短信验证码.群发短信会议通知.会员/客户关系交流.订单生成通知.发货通知.日程提醒.催费通知等等) 接 口特 点: 绿色短 ...

  4. java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例

    java如何绘制哆啦A梦?本篇文章小编给大家分享一下java绘制哆啦A梦代码示例,绘制的哆啦A梦超可爱,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 以下是画出哆啦a梦的代 ...

  5. java三角形代码,Java编程实现帕斯卡三角形代码示例

    源程序揭秘 杨辉三角形性质: 每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1. 第 n 行的数字个数为 n 个. 第 n 行数字和为 2^(n-1) . 每个数字等于上一行的左右两个数字之 ...

  6. java kryo_Kryo框架使用方法代码示例

    Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo ...

  7. java Gregorian,Java GregorianCalendar getTimeZone()用法及代码示例

    java.util.GregorianCalendar.getTimeZone()方法是Java中的内置方法,可获取时区并返回与此日历关联的TimeZone对象. 用法: public TimeZon ...

  8. java中div的用法,Java Math floorDiv()用法及代码示例

    java.lang.Math.floorDiv()是java中的内置数学函数,它返回小于或等于代数商的最大(最接近正无穷大)int值.由于floorDiv()是静态的,因此不需要创建对象. 用法: p ...

  9. java queue 使用,Java Queue offer()用法及代码示例

    队列接口的offer(E e)方法在不违反容量限制的情况下可以立即将指定的元素插入此队列.此方法优于add()方法,因为在容器的容量已满时,此方法不会引发异常,因为它会返回false. 用法: boo ...

最新文章

  1. 第一篇随笔——新的开端
  2. 知识图谱的皇冠:知识图谱推理的前世今生
  3. 多角度人脸识别简单介绍
  4. 国内数据中心分布及供电系统概述
  5. 终于搞定T43上的Access Connection了!
  6. java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
  7. 【教训】rm -fr ./* 教训
  8. DOM对象与Jquery对象区别
  9. Bug--WARN Please initialize the log4j system properly.
  10. 2014年国内最热门的.NET开源项目TOP25
  11. dstat 命令详解
  12. 全网最全网络安全站点汇总!还不赶快放到收藏夹里吃灰
  13. Windows10 1050Ti cuda toolkit11.3 pytorch-gpu 踩坑教程
  14. element表格标题两行设置办法
  15. Python之绘制七段数码管
  16. 艾玛·沃特森私密照惊现论坛 又是黑客惹的祸
  17. linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路
  18. 矩阵的entry 和element?
  19. 如何将视频分割成几部分 视频剪切软件哪个好
  20. 关于设定校园二手租赁系统的计划、功能及建议

热门文章

  1. Kubernetes入门——Kubernetes日志采集与监控告警
  2. php怎么克隆,利用php怎么对对象进行克隆
  3. 苹果手机视频传输教程-通过无线将电脑上视频传到手机
  4. button theme
  5. Selenium Webdriver元素定位的八种常用方式
  6. 退出循环:break 跳过当前的这次循环,直接开始下一次循环:continue
  7. 使用PHP创建一个REST API(译)
  8. 《JavaScript高级程序设计》学习笔记(第二章)
  9. C++你不知道的那些事儿—C++语言的15个晦涩特性
  10. C#Windows 服务制作安装删除. 用户注销后,程序继续运行 (转载)