文档章节

Java 读取XML

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

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编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/23 ⋅ 0

maven打jar包,配置文件没有被打入

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

小学生学习 ⋅ 04/26 ⋅ 0

Java NIO AsynchronousFileChannel

原文链接 , 原文作者:Jakob Jenkov, 翻译:Neil Hao 在Java 7,AsynchronousFileChannel 被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。 创建一个A...

Neil_Hao ⋅ 01/20 ⋅ 0

14、Java并发性和多线程-Java ThreadLocal

以下内容转自http://ifeve.com/java-theadlocal/: Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有...

easonjim ⋅ 2017/06/16 ⋅ 0

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)【转】 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variabl......

thinkyoung ⋅ 2014/10/14 ⋅ 0

mybatis系统学习(二)——使用基础mybatis代替原始jdbc

mybatis系统学习(二)——使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明。 有兴趣的或者对...

推荐码发放 ⋅ 05/03 ⋅ 0

android -------- java虚拟机和Dalvik虚拟机

java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚...

切切歆语 ⋅ 04/29 ⋅ 0

4个Java的常用工具,了解一下吧!

在现如今的互联网时代里,Java无疑是一种极为流行的开发语言,无论是程序界还是整个互联网行业势必带来很大的影响。不管是人才需求还是薪资水平上,Java的发展前景都是很乐观的。 关于Java的...

梦想远方_8e96 ⋅ 06/15 ⋅ 0

Java 使用 happen-before 规则实现共享变量的同步操作

前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。按照官方的...

stateIs0 ⋅ 01/20 ⋅ 0

百词斩Java程序员面试11个问题,你会几个?2018-04-10

近日,我们在w3cschool app开发者头条上,可以看到百词斩Java程序员面经。 在分享百词斩Java面经前,w3cschool特别给程序员小伙伴们带来一些Java学习干货: 0、学习Java必备的3大神器 如果你...

W3Cschool ⋅ 04/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部