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 ...
随机推荐
- 事件的节流(throttle)与防抖(debounce)
事件的节流(throttle)与防抖(debounce) 有些浏览器事件可以在短时间内快速触发多次,比如调整窗口大小或向下滚动页面.例如,监听页面窗口滚动事件,并且用户持续快速地向下滚动页面,那么滚动 ...
- [Algorithm] 8. Rotate String
Description Given a string and an offset, rotate string by offset. (rotate from left to right) Examp ...
- Gym - 101670E Forest Picture (CTU Open Contest 2017 模拟)
题目: https://cn.vjudge.net/problem/1451310/origin 题意&思路: 纯粹模拟. 大体题意是这样的: 1.有人要在一个10-9<=x<=1 ...
- python lambda简易使用
基本格式 lambda 变量名:函数表达式 ①直接使用 f=lambda x:x**2 f(3) ②设置函数列表 l=[lambda x:x**2, lambda x:x**3, lambda x:x ...
- Sublime Text 3 快捷键(转载)
本文转自:https://segmentfault.com/a/1190000002570753 (欢迎阅读原文,侵删) Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令 ...
- 洛谷 2176 [USACO14FEB]路障Roadblock
[题意概述] 修改图中任一一条边的边权,使其加倍,问怎样使修改后图中的1~n的最短路最大.输出最短路的增量. [题解] 先跑一遍dijkstra求出1~n的路径长度,记录下经过的边.枚举这些边进行修改 ...
- 【模板】51nod 1051 最大子矩阵和
[题解] 二重循环枚举起始列和终止列,竖着往下加,转化为一个最大子段和问题,逐行累加即可. #include<cstdio> #include<cstring> #includ ...
- CF2B The least round way
[题解] 可以发现10的因数除了1和10之外只有2和5了,那么走过的路径上各个数字的2的因数个数之和.5的因数个数之和中较小的一个即是答案.这样的话DP即可.同时需要注意有0的情况,有0的时候有一个答 ...
- PAT 1129 Recommendation System
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- POJ 3630
Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20894 Accepted: 6532 Descripti ...