文档章节

Java 读取XML

 糊不糊涂
发布于 2015/06/11 19:33
字数 283
阅读 9
收藏 1

package com.utility;


import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;


import org.apache.log4j.Logger;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.SAXReader;



/**

 * 文件配置读取类

 * @author zhangyang 20150603

 *

 */

public class XmlFile {


private static String section="Section";

private static String entry="Entry";

/**

* 获取Document对象

* @param xmlfilepath

* @return

* @throws DocumentException

*/

public static Document getDocument(String xmlfilepath) throws DocumentException{

SAXReader reader = new SAXReader();

Document document = null;

InputStream is=null;

is =ClassPathUtils.getWebrootInputStream(xmlfilepath);

if(is==null){

System.out.println("Error: Read file "+xmlfilepath+" to inputStream is failed!");

return document;

}

document=reader.read(is);

return document;

}

/**

* 获取对象数组

* @param customizerType

* @return

* @throws InstantiationException

* @throws IllegalAccessException

*/

public static List getObjectList(Element root,Class customizerType) throws InstantiationException, IllegalAccessException{

List customizerList=null;

try{

String sectionNode=section+"[@name='"+customizerType.getSimpleName()+"']";

Field[] fields= customizerType.getFields();

customizerList=new ArrayList();

List<Node> list= root.selectNodes(sectionNode);

System.out.println(customizerType.getSimpleName()+":"+list.size());

for(int i=0;i<list.size();i++){

Object customizer= customizerType.newInstance();

if(customizer!=null){

for (Field field : fields) {

Node node= list.get(i);

String entryStr= entry+"[@name='"+field.getName()+"']";

Node entryNode=node.selectSingleNode(entryStr);

if(entryNode!=null){

if(field.getType().equals(String.class)){

field.set(customizer, entryNode.getText());

}

}

}

}

customizerList.add(customizer);

}

}

catch(Exception e){


throw e;

}

return customizerList;

}


/**

* 读取xml

* @param customizer

* @throws IllegalArgumentException

* @throws IllegalAccessException

*/

public static void getFieldValue(Element root,Object customizer) throws IllegalArgumentException, IllegalAccessException{

try{

Class customizerType=customizer.getClass();

Field[] fields= customizerType.getFields();


String sectionNode=section+"[@name='"+customizerType.getSimpleName()+"']";


Node node= root.selectSingleNode(sectionNode);

for (Field field : fields) {

Node entryNode=node.selectSingleNode(entry+"[@name='"+field.getName()+"']");

if(entryNode!=null){

if(field.getType().equals(String.class)){

field.set(customizer, entryNode.getText());

}

}

}

}

catch(Exception e){


throw e;

}

}


}


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 283
作品 0
朝阳
程序员
JAXB Annotation初步使用

JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换...

秋风醉了
2014/07/02
0
0
Android 读取元素的数据

Android 读取<meta-data>元素的数据 在AndroidManifest.xml中,<meta-data>元素可以作为子元素,被包含在<activity>、<application> 、<service>和<receiver>元素中,但不同的父元素,在应用......

Simpleness
2012/07/29
0
0
android访问天气服务01--构建XmlPullParser

Pull模式解析原理: 与SAX解析器模拟相似,也提供了类似的事件驱动.使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进...

攀爬的小瓜牛
2014/09/01
0
0
maven打jar包,配置文件没有被打入

今天在给common项目打包的过程中,发现打出的包中(jar文件)不包含.properties文件,我们项目在读取一些配置时,把信息写在了weifutong.properties 文件中,地址为:XXX_common/src/main/j...

小学生学习
04/26
0
0
JSON-lib框架,转换JSON、XML不再困难

JSON-lib框架,转换JSON、XML不再困难 Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对...

DavidBao
2015/05/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部