如何用列表集合生成XML文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计461个文字,预计阅读时间需要2分钟。
需要实现一个反射功能,将一个对象转换为XML格式。以下是一个简化版的代码示例,用于展示如何实现这一功能:
javapublic class XmlConverter { public static void writeXmlByDoc(Class c) throws Exception { List list=new ArrayList(); list.add(new Users(1001, 小女儿));
StringBuilder xmlBuilder=new StringBuilder(); xmlBuilder.append();
for (Object obj : list) { xmlBuilder.append(); Field[] fields=c.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); xmlBuilder.append().append(field.get(obj)).append(); } xmlBuilder.append(); }
xmlBuilder.append();
System.out.println(xmlBuilder.toString()); }
public static void main(String[] args) { try { writeXmlByDoc(Users.class); } catch (Exception e) { e.printStackTrace(); } }}
class Users { private int id; private String name;
public Users(int id, String name) { this.id=id; this.name=name; }
// Getters and setters}
需要传一个类的反射//有瑕疵 不够完全面向对象 需要自己创建根节点 和 每一个次级节点
public static void writeXmlByDoc(Class c) throws Exception{
List
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; }
本文共计461个文字,预计阅读时间需要2分钟。
需要实现一个反射功能,将一个对象转换为XML格式。以下是一个简化版的代码示例,用于展示如何实现这一功能:
javapublic class XmlConverter { public static void writeXmlByDoc(Class c) throws Exception { List list=new ArrayList(); list.add(new Users(1001, 小女儿));
StringBuilder xmlBuilder=new StringBuilder(); xmlBuilder.append();
for (Object obj : list) { xmlBuilder.append(); Field[] fields=c.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); xmlBuilder.append().append(field.get(obj)).append(); } xmlBuilder.append(); }
xmlBuilder.append();
System.out.println(xmlBuilder.toString()); }
public static void main(String[] args) { try { writeXmlByDoc(Users.class); } catch (Exception e) { e.printStackTrace(); } }}
class Users { private int id; private String name;
public Users(int id, String name) { this.id=id; this.name=name; }
// Getters and setters}
需要传一个类的反射//有瑕疵 不够完全面向对象 需要自己创建根节点 和 每一个次级节点
public static void writeXmlByDoc(Class c) throws Exception{
List
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; }

