📄 beanxml.java
字号:
package cn.onlinema.util;
import java.lang.reflect.Method;
import com.wireless.sms.gwif.pub.entity.MT;
/**
* 和XmlBean一样功能,可以实现XML向Bean转换和Bean向XML转换
* @author mazy
*
*/
public class BeanXml {
/**
* 只适用于仅包含基本数据类型的bean
*
* @param classInstance
* @return
* @throws Exception
*/
public static String bean2Xml(Object classInstance) throws Exception {
String result = "";
Method[] method = classInstance.getClass().getMethods();
// System.out.println("-------------------------------");
for (int i = 0; i < method.length; i++) {
String name = method[i].getName();
// System.out.println(name);
if ((name.startsWith("get") || name.startsWith("is"))
&& !name.equals("getClass")) {
String x_name = name.startsWith("get") ? (name.substring(3, 4)
.toLowerCase() + name.substring(4)) : (name.substring(
2, 3).toLowerCase() + name.substring(3));
if (!method[i].getReturnType().toString().equals("void") &&
method[i].getParameterTypes().length==0) {
result = result + "<" + x_name + ">"
+ method[i].invoke(classInstance, null) + "</"
+ x_name + ">";
}
// System.out.println(method[i].getName() + " " +
// method[i].getDeclaringClass());
// Class[] pevc = method[i].getParameterTypes();
// System.out.println("pev.length=" + pevc.length);
// for(int j=0; j<pevc.length; j++) {
// System.out.println("param #" + j + " " + pevc[j]);
// }
// Class evec[] = method[i].getExceptionTypes();
// System.out.println("evec.length=" + evec.length);
// for (int j = 0; j < evec.length; j++)
// System.out.println("exc #" + j + " " + evec[j]);
// System.out.println("return type = " +
// method[i].getReturnType().toString());
// System.out.println("------------");
}
}
String rootName = classInstance.getClass().getName().replaceFirst(
classInstance.getClass().getPackage().getName() + ".", "").toLowerCase();
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><" + rootName + ">"
+ result + "</" + rootName + ">";
}
public static Object xml2Bean(java.io.InputStream input, String className)
throws Exception {
Class clas = new BeanXml().getClass().getClassLoader().loadClass(className);
Object ob = clas.newInstance();
Method[] method = ob.getClass().getMethods();
org.dom4j.io.SAXReader saxReader = new org.dom4j.io.SAXReader();
org.dom4j.Document doc = saxReader.read(input);
org.dom4j.Element root = doc.getRootElement();
for (int i = 0; i < method.length; i++) {
String name = method[i].getName();
if (name.startsWith("set")) {
// System.out.println(name);
String x_name = (name.substring(3, 4).toLowerCase() + name
.substring(4));
// System.out.println(x_name);
String c_name = method[i].getParameterTypes()[0].getName();
Object[] args = new Object[1];
if (c_name.equals("java.lang.String")) {
args[0] = new String(root.elementTextTrim(x_name));
} else if (c_name.equals("int")) {
args[0] = new Integer(root.elementTextTrim(x_name));
} else if (c_name.equals("boolean")) {
args[0] = new Boolean(root.elementTextTrim(x_name));
} else if (c_name.equals("char")) {
args[0] = new Character(root.elementTextTrim(x_name).charAt(0));
} else if (c_name.equals("byte")) {
args[0] = new Byte(root.elementTextTrim(x_name));
} else if (c_name.equals("short")) {
args[0] = new Short(root.elementTextTrim(x_name));
} else if (c_name.equals("long")) {
args[0] = new Long(root.elementTextTrim(x_name));
} else if (c_name.equals("float")) {
args[0] = new Float(root.elementTextTrim(x_name));
} else if (c_name.equals("double")) {
args[0] = new Double(root.elementTextTrim(x_name));
} else if (c_name.equals("java.util.Vector")) {
args[0] = new java.util.Vector();
} else if (c_name.equals("java.util.HashMap")) {
args[0] = new java.util.HashMap();
}
method[i].invoke(ob, args);
}
}
return ob;
}
public static Object xml2Bean(String inputXml, String className)
throws Exception {
Class clas = new BeanXml().getClass().getClassLoader().loadClass(className);
Object ob = clas.newInstance();
Method[] method = ob.getClass().getMethods();
for (int i = 0; i < method.length; i++) {
String name = method[i].getName();
if (name.startsWith("set")) {
// System.out.println(name);
String x_name = (name.substring(3, 4).toLowerCase() + name
.substring(4));
// System.out.println(x_name);
org.dom4j.io.SAXReader saxReader = new org.dom4j.io.SAXReader();
org.dom4j.Document doc = saxReader.read(new java.io.StringBufferInputStream(inputXml));
org.dom4j.Element root = doc.getRootElement();
String c_name = method[i].getParameterTypes()[0].getName();
Object[] args = new Object[1];
if (c_name.equals("java.lang.String")) {
args[0] = new String(root.elementTextTrim(x_name));
} else if (c_name.equals("int")) {
args[0] = new Integer(root.elementTextTrim(x_name));
} else if (c_name.equals("boolean")) {
args[0] = new Boolean(root.elementTextTrim(x_name));
} else if (c_name.equals("char")) {
args[0] = new Character(root.elementTextTrim(x_name).charAt(0));
} else if (c_name.equals("byte")) {
args[0] = new Byte(root.elementTextTrim(x_name));
} else if (c_name.equals("short")) {
args[0] = new Short(root.elementTextTrim(x_name));
} else if (c_name.equals("long")) {
args[0] = new Long(root.elementTextTrim(x_name));
} else if (c_name.equals("float")) {
args[0] = new Float(root.elementTextTrim(x_name));
} else if (c_name.equals("double")) {
args[0] = new Double(root.elementTextTrim(x_name));
} else if (c_name.equals("java.util.Vector")) {
args[0] = new java.util.Vector();
} else if (c_name.equals("java.util.HashMap")) {
args[0] = new java.util.HashMap();
}
method[i].invoke(ob, args);
}
}
return ob;
}
public int add(int a, int b) {
return a + b;
}
public void sd() {
try {
Class clas = Class.forName("cn.onlinema.util.BeanXml");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method method = clas.getMethod("add", partypes);
BeanXml methobj = new BeanXml();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = method.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intValue());
} catch (Throwable e) {
System.err.println(e);
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// ABean ab = new ABean();
// ab.setParam1(null);
// ab.setParam2("param2param13");
// ab.setParam3(3);
// ab.setParam4(true);
// String str = "vector test!!!";
// java.util.Vector v = new java.util.Vector();
// v.add(str);
// ab.setParam5(v);
// ab.setParam6(new java.util.HashMap());
// System.out.print(new BeanXml().bean2Xml(ab));
// new BeanXml().sd();
// String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ABean><param1>null</param1><param2>param2param13</param2><param3>3</param3><param4>true</param4><param5>[vector test!!!]</param5><param6>{}</param6><param7>null</param7></ABean>";
// ABean ab = (ABean) new BeanXml().xml2Bean(xml,
// "cn.onlinema.util.ABean");
// System.out.print(new BeanXml().bean2Xml(ab));
MT mt = (MT)BeanXml.xml2Bean(new java.io.FileInputStream(new java.io.File("D:/bean.xml")), "com.wireless.sms.gwif.pub.entity.MT");
System.out.println(mt);
System.out.print(BeanXml.bean2Xml(mt));
// MT.getInstance("");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -