A simple class for converting any Java object to XML string

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

A simple class for converting any Java object to XML string

In need to save XML representation of your Java object? Here is a simple 200-line class that will do this using reflection. But don't worry, there is some very powerful caching going on, so that the performance will be very good.

Thanks to comments for pointing out the isAssignableFrom() function in Class. Also, now the resulting XML is valid with all the special characters (&, <, >, &apos; and ").

package own;

import java.lang.reflect.*;

import java.util.*;

public class OptimizedReflectionMarshaller {

// cache for getters

private static HashMap gettersMap = new HashMap();

// cache for storing info on whether certain class implements Collection

private static HashMap collectionsMap = new HashMap();

private static final String JAVA = "java.";

private static final String JAVAX = "javax.";

private static final Class[] EMPTYPARAMS = new Class[0];

/**

* Info on a single field and the corresponding getter method

*/

private static class FieldMethodPair {

private String fieldName;

private Method getterMethod;

public FieldMethodPair(String fieldName, Method getterMethod) {

this.fieldName = fieldName;

this.getterMethod = getterMethod;

}

public String getFieldName() {

return fieldName;

}

public Method getGetterMethod() {

return getterMethod;

}

}

/**

* Returns the marshalled XML representation of the parameter object

*/

public static String marshal(Object obj) {

StringBuffer sb = new StringBuffer();

Class clazz = obj.getClass();

// get class name in lower letters (w/o package name)

String className = clazz.getName();

int lastDotIndex = className.lastIndexOf(".");

if (lastDotIndex >= 0)

className = className.substring(lastDotIndex + 1);

className = className.toLowerCase();

sb.append("<" + className + ">");

marshal(obj, sb);

sb.append("

Feel free to use and modify.

Enjoy

Kirill

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航