dom4j生成、解析xml
/**
* 创建xml
* @param obj 泛型对象
* @param entityPropertys 泛型对象的List集合
* @param Encode XML自定义编码类型
* @param XMLPath XML文件的路径及文件名
* @date 2011-5-8
* @author lujan
*/
public void createXmlDocument(T obj, List<T> entityPropertys, String Encode,
String XMLPath) {
try {
XMLWriter writer = null;// 声明写XML的对象
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(Encode); // 设置XML文件的编码格式 UTF-8
File file = new File(XMLPath);//获得文件
if (file.exists()) {
file.delete();
}
// 创建xml文件
Document document = DocumentHelper.createDocument();
String rootname = obj.getClass().getSimpleName(); //获得简单类名
Element root = document.addElement(rootname + "s");//添加根节点
Field[] properties = obj.getClass().getDeclaredFields();//获得实体类的所有属性
//赋值
for (T t : entityPropertys) { //递归实体
Element element = root.addElement(rootname); //二级节点
for (int i = 0; i < properties.length; i++) {
//反射get方法
Method meth = t.getClass().getMethod("get"+ properties[i].getName().substring(0, 1).toUpperCase() + properties[i].getName().substring(1));
//为二级节点添加属性,属性值为对应属性的值
element.addElement(properties[i].getName()).setText(meth.invoke(t).toString());
}
}
writer = new XMLWriter(new FileOutputStream(file), format);
writer.write(document);
writer.close();
} catch (Exception e) {
System.out.println("XML文件写入失败");
e.printStackTrace();
}
}
/**
* 解析
* @param XMLPath XML文件的路径(含名字)
* @param t 泛型对象
* @return List<T>
* @date 2011-5-8
* @author lujn
*/
public List<T> parserXml(String XMLPath, T t) {
List<T> list = new ArrayList<T>(); //创建list集合
try {
File f = new File(XMLPath); //读取文件
SAXReader reader = new SAXReader();
Document doc = reader.read(f); //dom4j读取
Element root = doc.getRootElement();//获得根节点
Element secondElement; //二级节点
Field[] properties = t.getClass().getDeclaredFields();//获得实例的属性
Method setMethod = null;
for (Iterator i = root.elementIterator(t.getClass().getSimpleName()); i.hasNext();) {
//遍历t.getClass().getSimpleName()节点
secondElement = (Element) i.next(); //下一个二级节点
t = (T)t.getClass().newInstance(); //获得对象的新的实例
Object[] args = new Object[properties.length];
for (int j = 0; j < properties.length; j++) {
//遍历所有孙子节点
//实例的set方法
setMethod = t.getClass().getMethod("set"+ properties[j].getName().substring(0, 1).toUpperCase()+ properties[j].getName().substring(1),properties[j].getType());
setMethod.invoke(t,secondElement.elementText(properties[j].getName())) ;
}
list.add(t);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
dom4j生成、解析xml的更多相关文章
- dom4j递归解析XML字符串所有子节点
/** * dom4j递归解析所有子节点 * * @param childElements * @param mapEle * @return */ public Map<String, Obj ...
- dom4j如何解析XML文件
最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~ 首先说:dom4j是一个java的XML ...
- 【dom4j】解析xml为map
dom4j解析xml文件 <?xml version="1.0" encoding="utf-8"?> <workflows> < ...
- java生成解析xml的另外两种方法Xstream
Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
- dom4j: 生成的XML文件根节点 xmlns="" 的问题
使用dom4j写入XML文件时,写入完毕后发现root element中没有 xmlns,也即是没有命名空间. 正确的写法如下: Document document = DocumentHelper. ...
- 【Android】使用Pull生成/解析XML文件
一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...
- JDOM,dom4j方式解析XML
<?xml version="1.0" encoding="UTF-8"?> <dataSources> <!-- 定义MySQL ...
- dom4j如何解析xml
简单解析自己定义的xml文件,首先,给解析xml文件的类来个构造方法: public xmlData(File xmlFile) { file = xmlFile; try { saxReader = ...
- java生成解析xml的另外两种方法JAXB
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反 ...
随机推荐
- 容器的范围 .xml
pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...
- 从高铁G18中高端如厕看12306的验证码
1.引子 最近疯狂的吐槽12306网站的虐心验证码. 从对铁老大的一贯作风来说,这个事不过是芝麻绿豆的事情.这个事件只是因为发生在网络上,而引起了广大网民的一致谴责而已. 相信更丰富的如厕经历,大家只 ...
- (转)MFC消息机制
转自:http://blog.csdn.net/kongfuxionghao/article/details/35882533
- EditText的几个小点
1. EditText 由 TextView 继承而来 2. android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘 ...
- Excel的 OleDb 连接串的格式
Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)(2012-08-02 13:04:20) string strCon = "Provide ...
- 一款APP从设计稿到切图过程全方位揭秘 Mark
纯干货!一款APP从设计稿到切图过程全方位揭秘 @BAT_LCK:我本身是一名GUI设计师,所以我只站在GUI设计师的角度去把APP从项目启动到切片输出的过程写一写,相当于工作流程的介绍吧.公司不 ...
- 从四大音乐APP首页设计对比分析产品方向
原帖:http://www.ui.cn/detail/63201.html 本文章中作者例举四个音乐APP应用:虾米.网易.百度.QQ首页 1. 推荐内容:作者将四个首页界面划分出官方推荐与个性化推荐 ...
- jsp页面元素和内置对象
java server pages其根本是一个简化的servlet设计.实现了在java当中使用html标签.javaEE标准 一.页面元素 1.静态内容 html.js.css相关标签元素. 2.指 ...
- 开源框架DNN简介以及安装
donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dnn这个框架,考虑到又可以学习 ...
- jsp界面项目绝对路径问题
方法一:直接采用绝对路径 (不推荐) 在JSP页面端,获得本项目的绝对地址(如果你的项目叫MyApp,那么获得到的地址就是 http://localhost:8080/MyApp/): 代码如下: & ...