📄 xmlbean.java
字号:
package cn.onlinema.util;
import java.lang.reflect.Method;
/**
* 和BeanXml一样功能,可以实现XML向Bean转换和Bean向XML转换
* @author mazy
*
*/
public class XmlBean {
/**
* 只适用于仅包含基本数据类型的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();
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 + ">";
}
}
}
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")) {
String x_name = (name.substring(3, 4).toLowerCase() + name
.substring(4));
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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -