如何將一個例項物件轉為XML檔案
阿新 • • 發佈:2021-01-19
前言
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理。
PS:如有需要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>