- 浏览: 459522 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
gaodadawei:
登录失败,请重试楼主,我目前遇到这样一个错误,claros i ...
James+Claros+intouch2.1配置 -
VerRan:
qq346448412 写道请问。你上一节、 用的ORACLE ...
James+Claros+intouch2.1配置 -
qq346448412:
请问。你上一节、 用的ORACLE数据库、 这一节又用的是MY ...
James+Claros+intouch2.1配置 -
paladin1988:
good,我喜欢..
Hibernate自关联关系 -
lygxy12:
请问,能给163发邮件吗?该怎么配置?我安装上面的操作,发给1 ...
James+Claros+intouch2.1配置
引言:XML和J2EE密切的程度是不用说的了,由于我们的接口程序需要将别人发过来的XML文档信息进行处理,并持久化到数据库中。由于业务的不同,xml的格式也有所不同,不过执行的过程都是类似的,我们获得xml字符串信息并解析我们需要的信息,将这些信息持久化就ok了,这里存在的问题是随着业务的不同,xml格式不同需要将xml中的信息首先保存到不同的vo中,然后将vo持久化。这样反射机制就起了很大的作用。
1. 主函数
2. 利用XPath获得节点信息
3. 反射机制实现set方法的动态调用
1. 主函数
public static void main(String[] args) { // TODO Auto-generated method stub PaserXML p=new PaserXML(); String xml="<?xml version='1.0' encoding='UTF-8'?> <root><Customer><id>1</id><name>ddd</name></Customer>"+ "<order><orderId>2</orderId><orderName>nnmnmnmn</orderName></order></root>"; p.parserByXpath2(xml); }
2. 利用XPath获得节点信息
/** * 利用反射机制实现的 将xml中的相关信息付给Vo * 输入:String XML * 返回: void * 执行中---将XML数据 付给对应的VO :这里需要对命名进行规范 * */ public void parserByXpath2(String xml){ try { Reader in=new StringReader(xml); Document document=builder.build(in); Element root=document.getRootElement(); // System.out.println(root.getName()); Element o=(Element)org.jdom.xpath.XPath.selectSingleNode(root, "/root/order"); OrderVO vo=new OrderVO(); this.ElementTOVO(o, vo);//真正执行将通过Xpath解析出来的节点下的 信息 付给 VO System.out.println("vo.getOrderId()"+vo.getOrderId()); System.out.println("vo.getOrderName()"+vo.getOrderName()); } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
3. 反射机制实现set方法的动态调用
/** * 输入: Element 利用Xpath解析出来要做处理的 Docuemnt 文档树中的阶段信息 * 输出: Void * 思路: 读取XML文件中要做处理的值信息,将值赋给相应的VO的字段,这里需要调用其set方法实现 * 由于不同的VO会有不同数量,不同值得字段和set方法,这里采用反射机制. * * * */ public void ElementTOVO(Element e,Object vo){ Class clazz=vo.getClass(); Field fd=null; Method m=null; Class fType=null; String fName=""; Element element=null; String xmlValue=""; java.lang.reflect.Method[] method=clazz.getDeclaredMethods();//获得所有的声明方法 java.lang.reflect.Field[] field=clazz.getDeclaredFields();//获得所有的声明字段 for(int i=0;i<field.length;i++){ fd=field[i]; fName=fd.getName();// 获得字段的名称 fType=fd.getType();// 获得字段的类型 if("java.lang.String".equals(fType.getName())){//判断字段类型是否为String型,由于这里需要利用反射机制调用方法而且为了统一实现 //将VO中的字段都定义为String 型 element=e.getChild(fName);//获得e(即传过来的Element)下的制定名称的Element fName if(element==null){ xmlValue=null; } else{ xmlValue=element.getValue();//获得指定元素下的值信息 } fName=fName.substring(0,1).toUpperCase()+fName.substring(1,fName.length());//由于属性名第一个字母为小写 //为了调用set方法,将第一个字母大写 以便构造set方法名。 比如 orderId--->OrderId---->setOrderId if(fName!=null){//如果方法名存在 try { m=clazz.getMethod("set"+fName, new Class[]{fType});//通过方法名获得 指定的方法参数类型 比如String //第一个参数指定要调用方法的名称、第二个指定调用方法的参数类型 } catch (SecurityException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NoSuchMethodException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } if(xmlValue!=null){ try { System.out.println(xmlValue); m.invoke(vo, new Object[]{xmlValue});//调用动态生成的方法 //参数一指定方法所在的类,参数二制定 参数的值 } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }
发表评论
-
springboot学习 - hello world
2017-03-15 18:15 493引子: 开始之前允许我介绍下我认识的spr ... -
Ext显示乱码问题
2012-04-03 13:27 1150转自:http://blog.csdn.net/raren/a ... -
Hadoop学习资料
2011-10-21 10:20 843http://www.cnblogs.com/wayne101 ... -
NodeJs和 mongodb初识
2011-10-20 14:41 1051NodeJS: 提供javascirpt 实现服务器端功能的引 ... -
WebService 非阻塞模式
2011-03-30 16:05 1681package com.datastruct.sort; ... -
利用 Java dump 进行 JVM 故障诊断
2011-01-11 15:58 1448转自:http://jimmyleeee.blog.163.c ... -
LocalTransactionContainment 期间回滚了一个或多个本地事务资源。
2011-01-09 10:29 1964此问题查过很多,但是大家解决方法不一。下面列出 YuLiMin ... -
RETE 算法的描述(转)
2010-07-20 16:57 1280转自:http://www.cnblogs.com/ipoin ... -
Hermes配置
2010-02-02 18:09 1124一直报错UnmarshalException 后来发现 ... -
界面原型设计工具–Balsamiq Mockups
2009-12-09 13:31 1763原文地址:http://www.pbdigg.net/s ... -
JTA 事务使用
2009-11-23 15:20 1555业务场景: 客户下发订单后,订单到竣工需要走三个岗位1,2, ... -
webSphere 下消息驱动Bean 与队列JNDI的关联
2009-09-21 17:44 14601. 消息驱动Bean配置ejb-jar.xml ... -
Hibernate 二级缓存
2008-07-15 10:17 3262Hibernate二级缓存 1. HIbernate.cfg ... -
webService-小记
2008-03-24 18:57 1036A web service has one or more p ... -
Hessian
2008-02-16 11:16 1519Hessian is a simple binary pro ... -
Action – JSP – Javascript之间的参数传递
2007-11-19 19:04 3632Action – JSP – Javascript之间的参数传 ... -
java 获取存储过程 输出参数
2007-11-13 15:21 5235connection = session.c ... -
js获得<table>的单元格信息
2007-11-08 16:41 54451. 获取表格中的某个单元格的内容 var tid= ... -
Eclipse快捷键
2007-10-23 10:47 912作用域 功能 快捷键 全 ... -
HTTP深入浅出
2007-09-27 10:10 1362转自:http://www.blogjava.ne ...
相关推荐
在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...
本篇文章将深入探讨如何利用反射在C#中动态创建对象。 1. **反射基础** 反射是.NET框架提供的一种特性,通过System.Reflection命名空间中的类来实现。主要类包括Assembly(程序集)、Type(类型)、...
在XML解析中,反射机制常用于根据XML配置文件动态地实例化和调用类的方法。 "XML解析与反射应用联合"的主题,意味着这个压缩包可能包含了一个示例项目,展示了如何结合XML解析和反射来实现灵活的配置和动态行为。...
利用反射,我们可以动态地创建对象,这意味着在代码执行时,我们能够实例化未知类型的对象,这在处理插件系统、动态加载用户界面组件或根据配置文件创建对象时非常有用。 标题中提到的"利用反射动态创建对象",主要...
可能的实现是先使用XML解析库(如JAXB或DOM)将XML字符串解析成DOM树,然后通过反射找到对应的类并创建实例,再根据XML节点信息设置对象的属性。这一过程涉及到了对`java.lang.reflect`包中类的使用,如`Class.for...
Java的反射机制则是Java编程语言提供的一种强大的功能,允许程序在运行时检查类、接口、字段和方法的信息,并能够动态调用方法和创建对象。 在解析XML文件时,Java提供了多种API,其中最常用的是DOM(Document ...
本程序集的核心是利用Java解析XML文件,将XML中的数据映射到数据库,并通过反射机制进行数据库操作。下面将详细阐述这些知识点。 首先,XML解析在Java中通常有两种方式:DOM(Document Object Model)和SAX(Simple...
反射机制则是Java语言提供的一种强大的工具,允许程序在运行时动态获取类的信息(如类名、属性、方法等)并进行调用。 首先,让我们详细讲解JavaBean。JavaBean是符合一定规范的Java类,主要特点是:公开的构造函数...
在这个"无Bug插件演示源码"中,我们将深入探讨如何利用反射机制实现一个灵活的插件系统,该系统不仅支持动态加载实现特定接口的类,还能够通过XML配置文件来控制这些行为。 首先,让我们看看关键知识点——反射。在...
1. 反射:反射是C#中的一种强大机制,它允许运行时的代码获取类型信息并动态地创建对象、调用方法或访问字段。例如,在“DBWebService”中,我们可能有一个数据库服务,反射可以用来动态加载服务接口并在运行时发现...
在Java编程中,类反射机制是一种强大的工具,它允许程序在运行时检查并操作类的信息,包括类的方法、属性和构造器。这个机制是Java动态性的重要体现,它使得我们能够在不知道具体类名的情况下,创建对象并调用其方法...
Java反射机制是Java语言的一个强大特性,它允许程序在运行时动态地获取类的信息(如类名、方法名等),并能直接操作这些信息。这使得Java程序能够做到在运行时检查类的结构、调用方法以及创建和操作对象。 #### ...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。在Android系统中,Java反射机制同样被广泛应用,尤其是在动态加载类、处理不确定类型的对象、调用私有方法...
首先定义`Person`类,然后在测试类`TestPerson`中利用反射API获取`Person`的类信息和对象信息。 **3.4 拓展知识** 反射机制是许多高级Java特性和框架的基础,如动态代理、泛型、注解和Java EE的容器管理。在设计...
总结来说,DOM4J提供了强大的XML处理能力,而Java反射机制则赋予了程序在运行时对类和对象的动态操作能力。结合两者,可以实现Bean与XML之间的灵活转换,极大地提高了代码的可维护性和可扩展性。在实际开发中,这两...
掌握Tomcat解析XML和利用反射机制动态创建对象的技术,能够使得开发者更加灵活地处理服务器端的请求,提高应用的扩展性和维护性。在实际开发中,开发者需要根据应用程序的需求,合理地配置web.xml文件,以及使用反射...
通过反射机制,开发人员可以在程序运行期间动态地获取类的信息,例如类的方法、字段、构造函数等,并能够创建对象、调用方法或设置字段值。 #### 二、Class对象 在JAVA中,`Class`对象是执行RTTI的核心。每个类都...
在这个主题中,我们将深入探讨如何使用XStream进行XML与Java对象的互换,并了解其工作原理。 首先,XStream是一个开源库,由Johannes Leutenegger创建,它通过简单的API提供XML序列化和反序列化。这个库的特点在于...
类的反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、字段以及方法等对象。这种动态类型的能力使得代码更加灵活,能够在未知类的情况下进行操作,增强了程序的可扩展性和元编程能力...
然而,这个资源是关于如何利用反射机制来创建一个自制的Struts框架的实践。反射在Java中是一个强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息,甚至可以动态调用方法。 首先,我们需要理解...