- 浏览: 197610 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wentry:
java中字符带有斜杠时,比如\\x00\\x00\\x00\ ...
java中调用js脚本 -
chenzheng8975:
...
ajax -
蓝色飞扬:
有用,也碰到这个问题了,多谢!
java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion -
刘宇斌:
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发 -
moxiaomomo:
同样的疑问啊...对tomcat缓存仍然一知半解...
tomcat 缓存
由于要和c++交互,就采用了简单的xml数据交换格式,根据需要封装了从xml到bean,和bean到xml,只供参考,不能测试。
package com.dbs.core.util;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.dom4j.Element;
import org.dom4j.Node;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.dbs.qbzb.service.dao.ShiftService;
public class XmlBeanConvertUtil {
private static final Log log = LogFactory.getLog(XmlBeanConvertUtil.class);
private static ShiftService shiftService;
private static final String domain_package = "com.dbs.qbzb.domain";
private static final String domain_package_dot = "com.dbs.qbzb.domain.";
static {
log.debug("开始初始化shiftService...");
ApplicationContext conn = new ClassPathXmlApplicationContext(
new String[] { "classpath:applicationContext-*.xml",
"classpath:datasource-context.xml" });
shiftService = (ShiftService) conn.getBean("shiftService");//来自dao层,根据需要所加,设计中应该去掉,已达到正真的util
}
/*
* 用于 genenateXml()方法 从对象中得到值,以生成xml
*/
public static String getFieldValue(Object objValue, String name) {
StringBuffer xml = new StringBuffer();
if (objValue instanceof java.util.Set) {
xml.append("<" + name + ">");
Set list = (Set) objValue;
if (list == null || list.size() == 0) { // 如果是集合就递归
} else {
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
xml.append(generateXML(object));
}
}
xml.append("</" + name + ">");
}
else if(objValue!=null&&objValue.getClass().getPackage().getName().equals(domain_package)){
xml.append(generateXML(objValue));
}if(objValue==null){
xml.append("<" + name + ">");
xml.append("</" + name + ">");
}
else if (objValue instanceof java.util.Date) { // 处理时间类型
xml.append("<" + name + ">");
java.util.Date valueDate = (java.util.Date) objValue;
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
xml.append(formatter.format(valueDate));
xml.append("</" + name + ">");
} else if (objValue instanceof String) {
xml.append("<" + name + ">");
xml.append(objValue);
xml.append("</" + name + ">");
} else if (objValue instanceof Integer) {
xml.append("<" + name + ">");
xml.append(String.valueOf(objValue));
xml.append("</" + name + ">");
}
return xml.toString();
}
/**
* 生成xml
*/
public static String generateXML(Object object) {
Class cls_class = object.getClass();
String cls_str = cls_class.toString();
String objname = cls_str.substring(cls_str.lastIndexOf(".") + 1,
cls_str.length());// 得到类名称,包含前缀
StringBuffer xml = new StringBuffer();
xml.append("<" + objname + ">");
Field[] fields = cls_class.getDeclaredFields(); // 得到成员属性名称,不包含前缀
String name = "";
try {
for (int i = 0; i < fields.length; i++) {
name = fields[i].getName();
if (name.equals("serialVersionUID")) { // 如果是序列号就去掉
continue;
}
Object objValue = PropertyUtils.getProperty(object, name); // 得到属性值
xml.append(getFieldValue(objValue, name));
}
} catch (Exception e) {
log.error("在"+object+"中没有找到属性名为"+name+"的方法...", e);
}
xml.append("</" + objname + ">");
return xml.toString();
}
/*
* 生成bean
*/
public static Object generateBean(Element strXML) {
String name = "";
String type = "";
String classname = "";
Object object = null;
try {
classname = domain_package_dot + strXML.getName();
object = Class.forName(classname).newInstance();
List<Element> e_array = strXML.elements();
for (Iterator iterator = e_array.iterator(); iterator.hasNext();) {
{
Element element = (Element) iterator.next();
name = element.getName();
log.debug("查询到方法节点名"+name);
type = PropertyUtils.getPropertyType(object, name.toLowerCase())
.getName();
object = newObjectByType(object, type, name, element);
}
}
} catch (Exception e) {
log.error(classname+"不存在或者在"+classname+"中没有找到属性名:"+name.toLowerCase(), e);
}
return object;
}
/**
* 根据参数给类赋值
* @param object
* @param type
* @param field_name
* @param element
* @return
*/
private static Object newObjectByType(Object object, String type,
String field_name, Element element) {
try {
if (type.endsWith("java.lang.String")) { //处理String类型
PropertyUtils
.setProperty(object, field_name, element.getText());
} else if (type.endsWith("java.lang.Integer")) { //处理integer
System.out.println(type.endsWith("java.lang.Integer"));
PropertyUtils.setProperty(object, field_name, Integer
.parseInt(element.getText()));
} else if (type.endsWith("java.util.Set")) {
Set set = new HashSet();//处理set
List<Element> e_list = element.elements();
for (Iterator iterator = e_list.iterator(); iterator.hasNext();) {
Element object2 = (Element) iterator.next();
generateBean(object2);
set.add(generateBean(object2));
PropertyUtils.setProperty(object, field_name, set);
}
}else if(type.startsWith(domain_package)){
if(getBeanById(element)!=null){
Class cls = Class.forName(domain_package_dot+element.getName());
PropertyUtils.setProperty(object, field_name.toLowerCase(), cls.cast(getBeanById(element)));
}
}
} catch (Exception e) {
log.error(domain_package_dot+element.getName()+"类不存在", e);
}
return object;
}
private static Object getBeanById(Element e) throws Exception {
Object object = null;
Node node = e.selectSingleNode("//id");
log.debug("没有找到属性"+e.getName()+"的id");
if(node!=null){
Integer id = Integer.parseInt(node.getText());
object = shiftService.getObjectById(Class.forName(domain_package_dot+e.getName()),id);
}
return object;
}
/**
* 生成最终xml,加上头
* @param args
*/
public static String beanToXml(Object object){
String xml = "<?xml version='1.0' encoding='UTF-8'?>"
+ generateXML(object);
log.debug("生成最终xml:"+xml);
return xml;
}
}
发表评论
-
java 修饰符
2009-10-31 16:37 1413Java语言定义了public、protected、priva ... -
Java虚拟机 堆
2009-10-25 22:27 1112Java程序在运行时创建的所有类实例或者数组都放在堆 ... -
Java虚拟机 方法区
2009-10-25 21:09 1855对于被装载的每个类,虚拟机都会把这个类的类型信息存储在方法区, ... -
Java虚拟机 体系结构
2009-10-25 21:03 1248当一个Java虚拟机运行一 ... -
java中调用js脚本
2009-10-16 18:27 14945JDK1.6加入了对Script(JSR ... -
Java 位运算
2009-09-28 16:43 5048Java 位运算[转] 一,Java 位运算 ... -
拾遗补缺-jdk6新特性
2009-08-09 17:13 12771,输出到文件 java Hello.java > he ... -
拾遗补缺-ResourceBundle
2009-08-08 23:54 2509http://gceclub.sun.com.cn/Java_ ... -
拾遗补缺-logger
2009-08-08 23:33 1188java.util.logging.Logger的使用 20 ... -
拾遗补缺-date
2009-08-08 23:22 995DateFormat 来格式化日期 2009年01月21日 ... -
classloader
2009-08-08 22:53 1135什么是ClassLoader ClassLoader是一个抽 ... -
Callable与Future
2009-08-08 22:40 1531java.util.concurrent.Callable与j ... -
concurren套件(转载)
2009-08-08 22:31 1305从J2SE 5.0开始有了java.util.concurre ... -
java多线程转载
2009-08-07 18:06 1161Java Thread API 允许程序员编写具有多处理机制优 ... -
java字符集
2009-08-04 17:05 1953ASCII 字符集 1.名称的由来 ASCII( ... -
ajax
2007-09-22 18:12 1567今天第一 ... -
Ajax链接servlet的一个注意事项
2007-09-23 18:02 899这是我用到的一段代码: createXMLHttpReq ... -
tomcat 缓存
2007-09-24 19:28 1516今天写项目的时候遇到一个问题: 就是当打印自定义异常的时候一 ... -
如何用javascript控制checkbox,并进行批量删除
2007-09-24 19:51 1738在做系统数据删除的时候,往往需要批量删除一些数据,如何做到呢? ... -
用servlet filter 解决编码问题的一个小例子
2007-09-24 20:02 1228当在做程序的是你也许会遇到一些很让你恼火的乱码问 ...
相关推荐
<session>元素用于描述EJB组件的会话Bean信息,该元素包含了多个子元素,如<DESCRIPTION>、<display-name>、<small-icon>、<large-icon>等。 <DESCRIPTION>元素用于描述EJB组件的概要信息,例如EJB组件的名称、版本...
验证框架--> bean-validation.xml (实体验证)、SaveAction-validation.xml (保存验证)、UpdateAction-validation.xml (修改验证) 日志管理配置 --> log4j.xml 国际化配置-->globalMessages_zh.properties(中文) ...
标题"xml-bean apache"指的是Apache XML Beans项目,这是一款强大的Java库,用于处理XML文档,特别是基于XML Schema的文档。通过XML Beans,开发人员可以利用Java类来直接操作XML数据,这些类是根据XML Schema自动...
验证框架--> bean-validation.xml (实体验证)、SaveAction-validation.xml (保存验证)、UpdateAction-validation.xml (修改验证) 日志管理配置 --> log4j.xml 国际化配置-->globalMessages_zh.properties(中文)...
验证框架--> bean-validation.xml (实体验证)、SaveAction-validation.xml (保存验证)、UpdateAction-validation.xml (修改验证) 日志管理配置 --> log4j.xml 国际化配置->globalMessages_zh.properties(中文) ...
-- 属性注入 --> <property name="name" value="Example"/> </bean> ``` 其中,`id`属性是Bean的唯一标识,`class`属性指定Bean对应的Java类。 5. **依赖注入**: Spring的核心特性之一是依赖注入。上述示例中...
VO --> bean.java及 bean.hbm.xml配置文件 Service --> Service接口定义类 DAO --> DAO接口定义类 DAOImpl --> DAO接口Implements实现类 程序配置 --> web.xml 验证框架--> bean-validation.xml (实体验证)、...
* 简化配置:使用<context:component-scan/>标签可以自动检测和加载 Bean,无需手动配置 XML 文件。 * 提高开发效率:使用<context:component-scan/>标签可以减少代码量和提高开发效率。 * 增强灵活性:使用...
-- 解决PUT请求无法提交表单数据的问题 --> <filter> <filter-name>HttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> ...
--> </managed-bean> ``` 每个Managed-bean都对应一个特定的功能或控件,并可以通过属性来定制其行为。在实际开发中,你可能需要根据需求添加更多的Managed-bean和自定义属性,以实现更丰富的功能。 通过以上步骤...
<param-value>/WEB-INF/spring/*.bean.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> ...
--刷新缓存时间--> <param-name>time</param-name> <param-value>10</param-value> </init-param> <init-param> <!--缓存存储位置--> <param-name>scope</param-name> <param-value>application</param-value...
-- 定义Form Bean --> </form-beans> <global-exceptions> <!-- 全局异常处理 --> </global-exceptions> <action-mappings> <!-- 定义Action --> ...
-- 在struts.xml中集成Spring --> <plugins> <plug-in className="org.apache.struts2.spring.StrutsSpringPlugin"> <!-- 配置Spring上下文 --> <set-property property="configurationClass" value="org.spring...
2. **<form-beans>**:配置 ActionForm 对象,每个 `<form-bean>` 元素表示一个 ActionForm 类实例,例如: ```xml <form-beans> <form-bean name="myForm" type="com.example.MyForm"/> </form-beans> ``` 3. ...
-- 表单Bean定义 --> <form-beans> <form-bean name="..." type="..."> ... </form-bean> ... </form-beans> <!-- Action映射 --> <action-mappings> <action path="..." type="..." name="..."> ...