项目中需要自定义生成一个xml,要把Javabean中的属性拼接一个xml,例如要生成以下xml

<?xml version="1.0" encoding="gb2312"?>

<students>
<student>
<name>张三</name>
<age>18</age>
<sex>男</sex>
</student>
<student>
<name>李四</name>
<age>19</age>
<sex>男</sex>
</student>
<student>
<name>小红</name>
<age>17</age>
<sex>女</sex>
</student>
</students>

我上篇文章有分享过dom4j xml 工具类

生成这个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 List<Student> student; public List<Student> getStudents() {
return student;
} public void setStudents(List<Student> 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);
List<Student> list = new ArrayList<Student>();
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; 这里的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;
}
}

如果大家有更好的方法,请指教,或者代码中有什么问题,也可以指教指教

利用反射与dom4j读取javabean生成对应XML的更多相关文章

  1. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

  2. 利用反射将IDataReader读取到实体类中效率低下的解决办法

    最开始使用反射一个类型的各个属性,对气进行赋值的代码如下: public static List<T> ToList<T>(IDataReader reader) { //实例 ...

  3. 利用反射获取数据列+emit生成属性+单例模式

    1:IDictionary<string,string > 可以存储数据,将拼接的sql可以存储到这里下次可以使用 定义自定义属性表和列 typeof(T).GetCustomAttrib ...

  4. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  5. 利用反射生成JDK动态代理

    利用反射生成JDK动态代理 在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成JDK动态代理类和动态代理 ...

  6. java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象

    java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类 ...

  7. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  8. Java——利用反射机制将表单数据自动填充到JavaBean中

    以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...

  9. 利用java反射动态调用方法,生成grid数据

    项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...

随机推荐

  1. TensorFlow中的 tensor 张量到底是什么意思?

    详见[Reference]: TensorFlow中的“Tensor”到底是什么? 以下摘录一些要点: 这个图好生动呀!~ 标量和向量都是张量(tensor).

  2. python 判断矩阵中每行非零个数的方法

    python 判断矩阵中每行非零个数的方法: # -*- coding: utf-8 -*- # @Time : 2018/5/17 15:05 # @Author : Sizer # @Site : ...

  3. 浅析PHP框架Laravel最新SQL注入漏洞

    PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下. 首先,这个漏洞属于网站coding写法不规范,官方给了提示: 但官方还是做了修补,升级最新版本V5.8. ...

  4. OpenCV 静态库 CMAKE 文件

    cmake_minimum_required(VERSION 3.12)project(computer_cv) set(CMAKE_CXX_STANDARD 11) find_package(Ope ...

  5. [笔记] 二级指针(pointer to pointer)

    // 1.pointer to pointer.cpp #include "stdafx.h" #include <stdlib.h> int _tmain(int a ...

  6. 【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[5]:调试 debug

    作者:Xuejie 原文链接:https://xuejie.space/2019_10_18_introduction_to_ckb_script_programming_debugging/ Ner ...

  7. IP地址和MAC地址绑定的必要性

    计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...

  8. SQL Server的NTEXT类型不支持等号"="操作(转载)

    SQL SERVER – Fix: Error : 402 The data types ntext and varchar are incompatible in the equal to oper ...

  9. 版本控制器:Git-的使用

    版本控制器:Git # 达到多人协同开发的目的 安装 """ 1.下载对应版本:https://git-scm.com/download 2.安装git:在选取安装路径的 ...

  10. 2019-08-01 jquery中常用方法

    1.attr()方法设置或返回被选元素的属性值 <html> <meta charset="utf-8"/> <head><title&g ...