java dom4j 读写XML
<?xml version="1.0" encoding="UTF-8"?> <Configuration>
<Config id="sysId">666</Config>
<Config id="sysName">en</Config>
</Configuration>
import com.google.common.base.MoreObjects;
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import java.io.*;
import java.util.List; /**
* Created by wfcfan on 2016/11/29.
*/
public class UserConfig implements Serializable { static private String CONFIG_XML_PATH = "D:\\data\\config.xml"; static private synchronized Document getConfigDocument() {
SAXReader reader = new SAXReader();
Document document = null;
try {
if (CONFIG_XML_PATH.startsWith("/")) {
document = reader.read(new File(CONFIG_XML_PATH));
} else {
document = reader.read(CONFIG_XML_PATH);
}
} catch (DocumentException e) {
e.printStackTrace();
}
return document;
} static public synchronized UserConfig getUserConfig() throws DocumentException { Element root = getConfigDocument().getRootElement(); List<Element> eles = root.elements();
UserConfig config = new UserConfig();
for (Element ele : eles) {
String idAttr = ele.attribute("id").getValue();
if (idAttr.equals("sysId")) {
config.setSysId(Integer.parseInt(ele.getTextTrim()));
} else if (idAttr.equals("sysName")) {
config.setSysName(ele.getTextTrim());
}
} return config;
} static public synchronized void setUserConfig(UserConfig config) {
Document doc = getConfigDocument();
Element root = doc.getRootElement(); List<Element> eles = root.elements();
for (Element ele : eles) {
String idAttr = ele.attribute("id").getValue();
if (idAttr.equals("sysId")) {
ele.setText(String.valueOf(config.getSysId()));
} else if (idAttr.equals("sysName")) {
ele.setText(config.getSysName());
}
} OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = null; try {
writer = new XMLWriter(new FileOutputStream(CONFIG_XML_PATH), format);
writer.write(doc);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} public UserConfig() { } public UserConfig(int id, String sysName) {
this.sysId = id;
this.sysName = sysName;
} private int sysId;
private String sysName; public int getSysId() {
return sysId;
} public void setSysId(int sysId) {
this.sysId = sysId;
} public String getSysName() {
return sysName;
} public void setSysName(String sysName) {
this.sysName = sysName;
} @Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("sysId", sysId)
.add("sysName", sysName)
.toString();
}
}
java dom4j 读写XML的更多相关文章
- Java DOM4J读取XML
DOM4J是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,採用了Java集合框架并全然支持DOM,SAX和JA ...
- dom4j读写XML文档
dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...
- Dom4j下载及使用Dom4j读写XML简介
sitinspring(如坐春风)原创,转载请注明作者及出处. 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4 ...
- Dom4j下载及使用Dom4j读写XML简介(转)
Dom4j下载及使用Dom4j读写XML简介 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:ht ...
- 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml
之前提到过,对于简单的网页结构解析,可以直接通过观察法.手工写正则解析,可以做出来,比如网易微博.但是对于结构稍微复杂点的,比如新浪微博,如果还用正则,用眼睛一个个去找,未免太麻烦了. 本文介绍两个工 ...
- 深入浅出Java Dom4j读取XML
在以前自己使用的xml较少,只是了解其很强大,现在可算是在DRP中,真正的开始使用它了,以前只是简单的理解xml,xml即可扩展标记语言,简单的使用,具体是什么?怎么用?还是一直让自己期待的. 首先来 ...
- dom4j读写XML文件
XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...
- java dom4j解析xml实例(2)
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
- java dom4j解析xml实例
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
随机推荐
- 【Js 文件】 相关
防止浏览器缓存 <script src="/js/common.js?t=<%=DateTime.Now.ToFileTime().ToString()%>>&quo ...
- [转载] kprobe原理解析(一)
From: https://www.cnblogs.com/honpey/p/4575928.html kprobe原理解析(一) kprobe是linux内核的一个重要特性,是一个轻量级的内核调试工 ...
- 洛谷——P1176 路径计数2
P1176 路径计数2 题目描述 一个N \times NN×N的网格,你一开始在(1,1)(1,1),即左上角.每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N,N)(N,N),即右下角有 ...
- [Algorithm] 4. Ugly Number II
Description Ugly number is a number that only havefactors 2, 3 and 5. Design an algorithm to find th ...
- python3 的 zip
准备放弃生命中这4个小时,然后翻开了python,人生苦短,音乐和python才味甘 1. zip 可以看到zip两个列表,返回一个元组的列表,但是它是个可迭代的对象,得用list才能调用显示: 2 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- [luoguP1631] 序列合并(堆 || 优先队列)
传送门 首先,把A和B两个序列分别从小到大排序,变成两个有序队列.这样,从A和B中各任取一个数相加得到N2个和,可以把这些和看成形成了n个有序表/队列: A[1]+B[1] <= A[1]+B[ ...
- codeforces gym 100357 J (网络流)
题目大意 有n种物品,m种建筑,p个人. n,m,p∈[1,20] 每种建筑需要若干个若干种物品来建造.每个人打算建造一种建筑,拥有一些物品. 主角需要通过交易来建造自己的建筑,交易的前提是对方用多余 ...
- nyoj_600_花儿朵朵_201404162000
花儿朵朵 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游 ...
- Android: MediaRecorder start failed
在某些机型上,MediaRecorder在调用start方法时,会出现start failed的错误,有一种可能是setVideoFrameRate导致的.要解决这个问题,只需要注释掉这条语句就可以了 ...