Java读写XML代码示例
采用技术:dom4j
需要jar包:dom4j-1.6.1.jar
主类如下----
public class dom4jTestXML {
/**
*
* 方法描述:读取XML文件示例 备 注: </br>
* 创 建 人: bo.gaobo</br>
* 修改日期: @2013-8-20</br>
*/
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文件并存储 备 注: </br>
* 创 建 人: bo.gaobo</br>
* 修改日期: @2013-8-20</br>
*/
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());
}
/**
* 方法描述:<b>存储完整XML文件.</b></br>
* 备 注: </br>
* 创 建 人: zyl</br>
* 创建日期:2013-3-18</br>
*
* @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;
/**
* 类 描 述:<b>dom4j输出格式化.</b></br>
* 备 注: </br>
* 创 建 人: yanlei.zhao</br>
* 创建日期: 2011-12-1</br>
*/
public class DomXmlOutputFormat extends OutputFormat {
/**
* 方法描述:<b>dom4j输出格式化..</b></br>
* 备 注: 保存Document到xml文件时,xml属性中的回车换行需要保留,
* 可是发现在使用过程中发现dom4j自动把回车换行去掉了。特写此类</br>
* 创 建 人: yanlei.zhao</br>
* 创建日期: 2011-12-1</br>
* @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文件----
<?xml version="1.0" ?>
<ROWDATA>
<ROW>
<C0>1</C0>
<EMPNO>7891</EMPNO>
<ENAME>sdffff</ENAME>
<JOB>job</JOB>
<MGR>mgr</MGR>
<HIREDATE>2010-1-1</HIREDATE>
<SAL>5000.00</SAL>
<COMM>1000.00</COMM>
<DEPTNO>deptno</DEPTNO>
</ROW>
<ROW>
<C0>2</C0>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800.00</SAL>
<COMM>comm</COMM>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWDATA>
示例文件结束----
Java读写XML代码示例的更多相关文章
- Java 读写XML文件 API--org.dom4j
om4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件 ...
- Java 读写XML
package dome4jTest; import java.io.FileWriter; import java.io.IOException; import java.net.URL; impo ...
- JNI Java调用C代码 示例
Activity public class MainActivity extends ListActivity { static { System.loadLibrary(&q ...
- java 管道流代码示例
import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream; public ...
- C# 读写XML文件示例
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...
- Java连接ActiveMQ代码示例(Producer和Consumer)
import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; ...
- java基础之----java常见异常及代码示例
概述 java中有两种错误类型,一个是Exception,一个是Error,都在java.lang包下,一般来说程序中的try...catch捕获的是Exception类型的异常,而Error类型的错 ...
- 使用XStream注解实现Java对象与XML互相转换的代码示例
本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例. 我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...
- JAVA对XML文件的读写(有具体的代码和解析
XML 指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具,应用于 web 开发的许多方面,常用于简化数据的存储和共享. xml指令 处理指令, ...
随机推荐
- 学习 27 门编程语言的长处,提升你的 Python 代码水平
Python猫注:Python 语言诞生 30 年了,如今的发展势头可谓如火如荼,这很大程度上得益于其易学易用的优秀设计,而不可否认的是,Python 从其它语言中偷师了不少.本文作者是一名资深的核心 ...
- Java(运算符)
运算符 Java语言支持的运算符: 算术运算符:+,-,*,/,%(取余.求余)[模运算],++(自增),--(自减) 赋值运算符:= 关系运算符:>,<,>=(大于等于),< ...
- box-shadow(盒子阴影)
box-shadow 属性可以设置一个或多个下拉阴影的框 可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开.该属性可设置的值包括阴影的X轴偏移量.Y轴偏移量.模糊半径.扩散半径和颜色. 语法: ...
- 当动态桌面遇上 HTML5
DreamScene2 + HTML5 = 无限可能.时隔一周,DreamScene2 动态桌面经过几个小版本的迭代,修复了一些问题并且功能也得到了增强.欢迎 Star 和 Fork https:// ...
- Shell字体颜色
输出特效格式控制: \033[0m 关闭所有属性 \033[1m 设置高亮度 \03[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m 消隐 \033[30m -- \033[ ...
- Python pyecharts绘制折线图
一.pyecharts绘制折线图line.add()方法简介 line.add()方法简介 add(name,x_axis,y_axis,is_symbol_show=True, is_smooth= ...
- cmake之Visual studio无法显示头文件
本文演示cmake版本:3.18 1. 问题 使用cmake创建的Visual Studio 项目都没有显示头文件, 比如: 可以清楚的看见,项目lib_pipe没有显示头文件 2. 配置CMakeL ...
- 【LeetCode】931. Minimum Falling Path Sum 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 相似题目 参考资料 日期 题目地址:htt ...
- Sublime Text 3菜单栏隐藏后怎么显示
Sublime Text 3如何显示菜单栏 今天在使用Sublime Text 3敲代码的时候不小心就把上侧的菜单栏隐藏了,自己鼓捣了半天才把菜单栏弄出来,下面我就给大家讲解一下我是如何操作的 键盘按 ...
- [技术干货-算子使用] Mindspore 控制流中存在原地更新操作类副作用算子时循环值不更新问题记录
关于mindspore 原地更新类算子的一点思考记录如下: 现象记录: 原始测试代码 错误结果复现: 分析: 如果在场景中加入42行的copy()操作此时cpu的结果就会正确,但是gpu的结果则不受c ...