如何用列表集合生成XML文件?

2026-04-15 07:5410阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计461个文字,预计阅读时间需要2分钟。

如何用列表集合生成XML文件?

需要实现一个反射功能,将一个对象转换为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();

如何用列表集合生成XML文件?

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 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; }

本文共计461个文字,预计阅读时间需要2分钟。

如何用列表集合生成XML文件?

需要实现一个反射功能,将一个对象转换为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();

如何用列表集合生成XML文件?

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 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; }