如何将一个实例对象转为XML文件

本实例使用的时jdom生成xml的方法,需引入jar包

<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>2.0.2</version>
</dependency>

不废话,入主题:

 

package com.test.file;

import com.kernel.entity.User;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.UUID;

/**
 * 生成xml文件的方法
 */
public class XmlDemo01 {
    /**
     * @param element   数据区分节点
     * @param c         对象的类
     * @param obj       对象的实例
     */
    public static void initXML(Element element, Class<?> c, Object obj) {
        //反射对象的属性,获取所有字段
        Field[] fields = c.getDeclaredFields();
        for (Field f : fields) {
            try {
                f.setAccessible(true);
                Element e = new Element(f.getName().toUpperCase());
                Object o = f.get(obj);
                if (o instanceof Number) {
                    e.setText((Number) o+"");//装箱后建议使该方法
                } else if (o instanceof Date) {
                    String d = DateFormatUtils.format((Date) o, "yyyy-MM-dd HH:mm:ss");//commons-lang3.jar中的方法
                    e.setText(d);
                } else {
                    e.setText(String.valueOf(o));
                }
                element.addContent(e);
            } catch (IllegalAccessException e1) {
                e1.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws IOException {
        Element root = new Element("USERS");
        root.setAttribute("version", "1.0");
        Document doc = new Document(root);

        Element userEle = new Element("USER");
        root.addContent(userEle);

        User user = new User(UUID.randomUUID().toString(), "jack", "m", 12, "110", "110@com", null, new Date(), "员工");

        XmlDemo01.initXML(userEle, User.class, user);

//        Format format=Format.getCompactFormat();
        Format format = Format.getPrettyFormat();
        format.setEncoding("utf-8");

        XMLOutputter out = new XMLOutputter(format);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        out.output(doc, baos);
        byte[] bytes = baos.toByteArray();
        baos.close();
//        String result0 = String.valueOf(baos);
        String result = new String(bytes,"utf-8");
        System.out.println(result);
    }
}

输出:

<?xml version="1.0" encoding="utf-8"?>
<USERS version="1.0">
  <USER>
    <ID>5fa29cf8-2118-4e34-a9f6-f3f9ed56bc63</ID>
    <USERNAME>jack</USERNAME>
    <GENDER>m</GENDER>
    <AGE>12</AGE>
    <PHONE>110</PHONE>
    <EMAIL>110@com</EMAIL>
    <BIRTH>null</BIRTH>
    <ADDTIME>2019-03-25 21:40:15</ADDTIME>
    <ROLE>员工</ROLE>
    <AQ>null</AQ>
    <AD>null</AD>
    <AD1>123tttvvv</AD1>
  </USER>
</USERS>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值