1. 程式人生 > 實用技巧 >如何將一個例項物件轉為XML檔案

如何將一個例項物件轉為XML檔案

前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理。

PS:如有需要Python學習資料的小夥伴可以加點選下方連結自行獲取

python免費學習資料以及群交流解答點選即可加入


本例項使用的時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>