⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beanxml.java

📁 很简单的几个类
💻 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 + -