项目中需要自定义生成一个xml,要把Javabean中的属性拼接一个xml,例如要生成以下xml
张三 18 男 李四 19 男 小红 17 女
我上篇文章有分享过。
生成这个xml,我们其实可以分析下,可以先新建一个student.java 里面有 name,age,sex属性,students 里面有多个student,那我们再新建一个students.java 里面搞个集合,然后我们通过之前我分享的工具类来操作。贴代码
1.student.java
/* * */package com.test;/** * 描述 学生类 * * @author 小当家 * @created 2017年12月11日 */public class Student { private String name; private String age; private String sex; public Student(String name, String age, String sex) { this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
2.students.java
/* * */package com.test;import java.util.List;/** * 描述 * @author 小当家 * @created 2017年12月11日 */public class Students { private Liststudent; public List getStudents() { return student; } public void setStudents(List students) { this.student = students; } }
3.测试
package com.test;import java.io.ByteArrayOutputStream;import java.util.ArrayList;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class Testxml { public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InstantiationException, ClassNotFoundException { Document doc = DocumentHelper.createDocument(); //创建根节点 Element root = DocumentHelper.createElement("students");//根节点 doc.setRootElement(root); Listlist = new ArrayList (); Student stu = new Student("张三", "18", "男"); Student stu2 = new Student("李四", "19", "男"); Student stu3 = new Student("小红", "17", "女"); list.add(stu); list.add(stu2); list.add(stu3); Students po = new Students(); po.setStudents(list); XmlUtil.copyAttrToEle(po, root);//复制对应的对象属性当到XML元素的值中 其中Students类中 private List student; 这里的student 表示字节点 System.out.println(document2String(doc)); } /** * * 描述 document2String * @author 小当家 * @created 2017年12月11日 * @param doc * @return */ private static String document2String(Document doc) { String str = ""; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputFormat format = new OutputFormat(" ", true , "gb2312"); XMLWriter writer = new XMLWriter(out,format); writer.write(doc); str = out.toString("gb2312"); } catch (Exception e) { e.printStackTrace(); } return str; }}
如果大家有更好的方法,请指教,或者代码中有什么问题,也可以指教指教