需要传一个类的反射 //有瑕疵 不够完全面向对象 需要自己创建根节点 和 每一个次级节点 public static void writeXmlByDoc(Class c) throws Exception{List list=new ArrayList (); list.add(new Users(1001, "小姑娘
//有瑕疵 不够完全面向对象 需要自己创建根节点 和 每一个次级节点
public static void writeXmlByDoc(Class c) throws Exception{
List
list=new ArrayList
(); list.add(new Users(1001, "小姑娘", "123", 1, new Roles(1, "CFO"))); list.add(new Users(1002, "小鹏宇", "1234", 2, new Roles(2, "BOSS"))); list.add(new Users(1003, "小宝贝", "12345", 3, new Roles(3, "CEO"))); Element root = DocumentHelper.createElement(c.getSimpleName()+"Manager"); Document doc = DocumentHelper.createDocument(root); for (Users users : list) { Element classElement = DocumentHelper.createElement(c.getSimpleName()); root.add(classElement); creatElements(c, classElement, users); } FileOutputStream fos = new FileOutputStream("studentTemp.xml"); OutputFormat format = new OutputFormat(" ",true); //XMLWriter writer = new XMLWriter(); XMLWriter writer = new XMLWriter(fos,format); writer.write(doc); System.out.println("over"); }
创建节点:
public static void creatElements(Class c,Element fatherElement,Object object) throws Exception{
String nameTemp;
for (Method me : c.getMethods()) {
for (Field fl : c.getDeclaredFields()) {
if(me.getName().equalsIgnoreCase("get"+fl.getName())){
Element nameElement = DocumentHelper.createElement(fl.getName());
nameElement.setText(me.invoke(object, null)+"");
fatherElement.add(nameElement);
if(!isBasicType(fl.getType())){
creatElements(fl.getType(), nameElement, me.invoke(object, null));
}
}
}
}
}
判断是否是基本类型:
public static boolean isBasicType(Class clazz){
if(clazz == Character.class || clazz == char.class || clazz == String.class ||
clazz == Integer.class || clazz == int.class ||
clazz == Float.class || clazz==float.class ||
clazz == Double.class || clazz == double.class ||
clazz == Byte.class || clazz == byte.class ||
clazz == Boolean.class || clazz == boolean.class ||
clazz == Long.class || clazz == long.class ||
clazz == Short.class || clazz == short.class){
return true;
}
return false;
}
