XStream實作Bean與xml互轉的程式碼範例
一、導入jar包
<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.8</version> </dependency>
二、重要註解說明
#@XStreamAlias 定義別名
@XStreamAsAttribute 定義為屬性
#@XStreamOmitField 忽略
##@XStreamConverter 處理日期格式@XStreamImplicit(itemFieldName = "roles") 處理#三、實例1、定義JavaBeanimport java.util.Date; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.annotations.XStreamImplicit; import com.thoughtworks.xstream.annotations.XStreamOmitField; import com.tzz.util.xml.DateConverter; @XStreamAlias("user") public class User { @XStreamAsAttribute private Integer id; private String name; @XStreamOmitField private int age; private String sex; @XStreamConverter(value = DateConverter.class) private Date birthday = new Date(); @XStreamImplicit(itemFieldName = "roles") private List<Role> roles; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public List<Role> getRoles() { return roles; } public void setRoles(List<Role> roles) { this.roles = roles; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("role") public class Role { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.dom4j.Element; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.thoughtworks.xstream.io.xml.XppDriver; public class XStreamXmlUtil { /** XML转Bean对象 */ @SuppressWarnings("unchecked") public static <T> T xmlToBean(String xml, Class<T> clazz) { XStream xstream = new XStream(); xstream.registerConverter(new DateConverter()); xstream.autodetectAnnotations(true); xstream.processAnnotations(clazz); xstream.setClassLoader(clazz.getClassLoader()); return (T) xstream.fromXML(xml); } /** Bean对象转XML */ public static String beanToXml(Object bean) { // return "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + new XStream().toXML(bean); XStream xstream = new XStream(); xstream.registerConverter(new DateConverter()); xstream.autodetectAnnotations(true); return xstream.toXML(bean); } }
import java.util.ArrayList; import java.util.Date; import java.util.List; import org.junit.Test; import com.tzz.test.util.xml.entity.Role; import com.tzz.test.util.xml.entity.User; import com.tzz.util.xml.XStreamXmlUtil; public class TestXStreamXmlUtil { @Test public void testBeanToXml() { try { User user = new User(); user.setId(1); user.setName("Test"); user.setAge(20); user.setSex("1"); user.setBirthday(new Date()); Role role = new Role(); role.setId(1); role.setName("角色1"); Role role2 = new Role(); role2.setId(2); role2.setName("角色2"); List<Role> roles = new ArrayList<Role>(); roles.add(role); roles.add(role2); user.setRoles(roles); String xml = XStreamXmlUtil.beanToXml(user); System.out.println(xml); } catch (Exception e) { e.printStackTrace(); } } @Test public void testXmlToBean() { String xml = "<user id='1'>"+ "<name>Test</name>"+ "<sex>1</sex>"+ "<birthday>2016-03-10 16:12:46</birthday>"+ "<roles>"+ "<id>1</id>"+ "<name>角色1</name>"+ "</roles>"+ "<roles>"+ "<id>2</id>"+ "<name>角色2</name>"+ "</roles>"+ "</user>"; User user = XStreamXmlUtil.xmlToBean(xml, User.class); System.out.println(user.getId() + "--" + user.getName()); List<Role> roles = user.getRoles(); for (Role r : roles) { System.out.println(r.getName()); } } }
<user id="1"> <name>Test</name> <sex>1</sex> <birthday>2016-03-10 17:35:41</birthday> <roles> <id>1</id> <name>角色1</name> </roles> <roles> <id>2</id> <name>角色2</name> </roles> </user>
1--Test 角色1 角色2
以上是XStream實作Bean與xml互轉的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

使用Python實現XML資料的合併和去重XML(eXtensibleMarkupLanguage)是一種用於儲存和傳輸資料的標記語言。在處理XML資料時,有時候我們需要將多個XML檔案合併成一個,或移除重複的資料。本文將介紹如何使用Python實現XML資料的合併和去重的方法,並給出對應的程式碼範例。一、XML資料合併當我們有多個XML文件,需要將其合

Python中的XML資料轉換為CSV格式XML(ExtensibleMarkupLanguage)是一種可擴充標記語言,常用於資料的儲存與傳輸。而CSV(CommaSeparatedValues)則是一種以逗號分隔的文字檔案格式,常用於資料的匯入和匯出。在處理資料時,有時需要將XML資料轉換為CSV格式以便於分析和處理。 Python作為一種功能強大

使用Python實現XML資料的篩選和排序引言:XML是一種常用的資料交換格式,它以標籤和屬性的形式儲存資料。在處理XML資料時,我們經常需要對資料進行篩選和排序。 Python提供了許多有用的工具和函式庫來處理XML數據,本文將介紹如何使用Python實現XML資料的篩選和排序。讀取XML檔案在開始之前,我們需要先讀取XML檔案。 Python有許多XML處理函式庫,

Python實作XML與JSON之間的轉換導語:在日常的開發過程中,我們常常需要將資料在不同的格式之間轉換。 XML和JSON是常見的資料交換格式,在Python中,我們可以使用各種函式庫來實作XML和JSON之間的相互轉換。本文將介紹幾種常用的方法,並附帶程式碼範例。一、XML轉JSON在Python中,我們可以使用xml.etree.ElementTree模

使用Python處理XML中的錯誤和異常XML是一種常用的資料格式,用於儲存和表示結構化的資料。當我們使用Python處理XML時,有時可能會遇到一些錯誤和異常。在本篇文章中,我將介紹如何使用Python來處理XML中的錯誤和異常,並提供一些範例程式碼供參考。使用try-except語句捕捉XML解析錯誤當我們使用Python解析XML時,有時候可能會遇到一些

Python解析XML中的特殊字元和轉義序列XML(eXtensibleMarkupLanguage)是一種常用的資料交換格式,用於在不同系統之間傳輸和儲存資料。在處理XML檔案時,經常會遇到包含特殊字元和轉義序列的情況,這可能會導致解析錯誤或誤解資料。因此,在使用Python解析XML檔案時,我們需要了解如何處理這些特殊字元和轉義序列。一、特殊字元和

C#開發中如何處理XML和JSON資料格式,需要具體程式碼範例在現代軟體開發中,XML和JSON是廣泛應用的兩種資料格式。 XML(可擴展標記語言)是一種用於儲存和傳輸資料的標記語言,而JSON(JavaScript物件表示)是一種輕量級的資料交換格式。在C#開發中,我們經常需要處理和操作XML和JSON數據,本文將重點放在如何使用C#處理這兩種數據格式,並附上
