java 读 xml_Java读写XML代码示例
采用技术: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代码示例相关推荐
- 用c语言做RFID读卡程序,2.STM32读卡号读写数据代码示例3.0(C语言)
文件名大小更新时间 2.STM32读卡号读写数据代码示例3.0(C语言)\HFRFID.uvgui.WEIZAI736912016-07-15 2.STM32读卡号读写数据代码示例3.0(C语言)\H ...
- java bitset用途_浅谈Java BitSet使用场景和代码示例
搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...
- java短信发送接口代码示例demo分享
适用类型:适用于各类办公系统.ERP.CRM.电子商务平台的插件(如网站app短信验证码.群发短信会议通知.会员/客户关系交流.订单生成通知.发货通知.日程提醒.催费通知等等) 接 口特 点: 绿色短 ...
- java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例
java如何绘制哆啦A梦?本篇文章小编给大家分享一下java绘制哆啦A梦代码示例,绘制的哆啦A梦超可爱,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 以下是画出哆啦a梦的代 ...
- java三角形代码,Java编程实现帕斯卡三角形代码示例
源程序揭秘 杨辉三角形性质: 每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1. 第 n 行的数字个数为 n 个. 第 n 行数字和为 2^(n-1) . 每个数字等于上一行的左右两个数字之 ...
- java kryo_Kryo框架使用方法代码示例
Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo ...
- java Gregorian,Java GregorianCalendar getTimeZone()用法及代码示例
java.util.GregorianCalendar.getTimeZone()方法是Java中的内置方法,可获取时区并返回与此日历关联的TimeZone对象. 用法: public TimeZon ...
- java中div的用法,Java Math floorDiv()用法及代码示例
java.lang.Math.floorDiv()是java中的内置数学函数,它返回小于或等于代数商的最大(最接近正无穷大)int值.由于floorDiv()是静态的,因此不需要创建对象. 用法: p ...
- java queue 使用,Java Queue offer()用法及代码示例
队列接口的offer(E e)方法在不违反容量限制的情况下可以立即将指定的元素插入此队列.此方法优于add()方法,因为在容器的容量已满时,此方法不会引发异常,因为它会返回false. 用法: boo ...
最新文章
- 第一篇随笔——新的开端
- 知识图谱的皇冠:知识图谱推理的前世今生
- 多角度人脸识别简单介绍
- 国内数据中心分布及供电系统概述
- 终于搞定T43上的Access Connection了!
- java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...
- 【教训】rm -fr ./* 教训
- DOM对象与Jquery对象区别
- Bug--WARN Please initialize the log4j system properly.
- 2014年国内最热门的.NET开源项目TOP25
- dstat 命令详解
- 全网最全网络安全站点汇总!还不赶快放到收藏夹里吃灰
- Windows10 1050Ti cuda toolkit11.3 pytorch-gpu 踩坑教程
- element表格标题两行设置办法
- Python之绘制七段数码管
- 艾玛·沃特森私密照惊现论坛 又是黑客惹的祸
- linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路
- 矩阵的entry 和element?
- 如何将视频分割成几部分 视频剪切软件哪个好
- 关于设定校园二手租赁系统的计划、功能及建议
热门文章
- Kubernetes入门——Kubernetes日志采集与监控告警
- php怎么克隆,利用php怎么对对象进行克隆
- 苹果手机视频传输教程-通过无线将电脑上视频传到手机
- button theme
- Selenium Webdriver元素定位的八种常用方式
- 退出循环:break 跳过当前的这次循环,直接开始下一次循环:continue
- 使用PHP创建一个REST API(译)
- 《JavaScript高级程序设计》学习笔记(第二章)
- C++你不知道的那些事儿—C++语言的15个晦涩特性
- C#Windows 服务制作安装删除. 用户注销后,程序继续运行 (转载)