文档章节

Java 读取XML

 糊不糊涂
发布于 2015/06/11 19:33
字数 283
阅读 10
收藏 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
朝阳
程序员
私信 提问
加载中
请先登录后再评论。
Java EE规范笔记

Java EE平台是一个实现了Java EE应用程序标准的宿主平台。 J2EE技术框架可以分为3部分:组件技术、服务技术和通信技术。 一、应用组件 1.Java EE必须支持的四种应用组件类型: a. 应用客户端...

啃不动地大坚果
2019/12/29
19
0
Java读取配置文件的几种方法

在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。 一...

osc_wws45aot
2019/08/20
4
0
spring 简述

Spring的发展 1.1. Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。 1.2....

osc_wtsf7p2s
2018/05/23
2
0
Bean Java配置

前面介绍了Bean的XML配置方法,从Spring 3.0开始,可以使用java代码配置Bean,替代XML配置。 Java配置与注解配置不同,Java配置是把Java代码文件当作配置文件,注解配置是在实际Java类中使用...

osc_u94h44ck
2019/06/06
1
0
Spring JDBC JdbcTemplate类示例

类是JDBC核心包中的中心类。它简化了JDBC的使用,并有助于避免常见的错误。 它执行核心JDBC工作流,留下应用程序代码来提供SQL并提取结果。 该类执行SQL查询或更新,在类上启动迭代并捕获JDB...

osc_1tlbypwh
2018/09/08
16
0

没有更多内容

加载失败,请刷新页面

加载更多

在JavaScript中从字符串中删除所有非数字字符 - Strip all non-numeric characters from string in JavaScript

问题: Consider a non-DOM scenario where you'd want to remove all non-numeric characters from a string using JavaScript/ECMAScript. 考虑一个非DOM场景,您希望使用JavaScript / EC......

法国红酒甜
今天
14
0
Quartz的Misfire处理规则 错过任务执行时间的处理机制

调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 CronTrigger withMisfireHandlingInstructionDoNothing ——不触发立即执行 ——等待下次Cron触发频率...

独钓渔
今天
4
0
如何在Django视图中合并两个或多个查询集? - How to combine two or more querysets in a Django view?

问题: I am trying to build the search for a Django site I am building, and in that search, I am searching in 3 different models. 我正在尝试搜索要构建的Django网站,在该搜索中,我......

javail
今天
5
0
PHP解析/语法错误; 以及如何解决它们? - PHP parse/syntax errors; and how to solve them?

问题: Everyone runs into syntax errors. 每个人都遇到语法错误。 Even experienced programmers make typos. 即使是经验丰富的程序员也会打错字。 For newcomers, it's just part of the......

fyin1314
今天
20
0
OSChina 周三乱弹 —— 公主是大王的,命是自己的。小怪也要养家糊口啊!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :郭燕的单曲《下半生》 最近听一些轻快的歌 #今日歌曲推荐# 《下半生》 - 郭燕 手机党少年们想听歌,请使劲儿戳(这里) @锦年 :...

小小编辑
今天
38
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部