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

📄 xmlbean.java

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