需要传一个类的反射 //有瑕疵 不够完全面向对象 需要自己创建根节点 和 每一个次级节点 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; }