一、重要類別說明
JAXBContext類,是應用程式的入口,用於管理XML/Java綁定資訊。
Marshaller介面,將Java對轉換為XML資料。
Unmarshaller接口,將XML轉換為Java物件。
@XmlType,將Java類別或枚舉類型對應到XML模式類型
@XmlAccessorType(XmlAccessType.FIELD) ,控製欄位或屬性的序列化。 FIELD表示JAXB將自動綁定Java類別中的每個非靜態的(static)、
非瞬態的(由@XmlTransient標註)欄位到XML。其他數值還有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 綁定類別中屬性和欄位的排序。
@XmlJavaTypeAdapter,使用自訂的適配器(即擴充抽象類別XmlAdapter並覆寫marshal()和unmarshal()方法),以序列化Java類別為XML。
@XmlElementWrapper ,對於陣列或集合(即包含多個元素的成員變數),產生一個包裝該陣列或集合的XML元素(稱為包裝器)。
@XmlRootElement,將Java類別或枚舉類型對應到XML元素。
@XmlElement,將Java類別的一個屬性對應到與屬性同名的一個XML元素。
@XmlAttribute,將Java類別的一個屬性對應到與屬性同名的一個XML屬性。
二、實例
1、JavaBean
import java.util.Date; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import com.tzz.util.xml.JaxbDateSerializer; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "country") @XmlType(propOrder = { "id", "createDate", "name", "provinceList" }) public class Country { private Integer id; @XmlJavaTypeAdapter(JaxbDateSerializer.class) private Date createDate; @XmlElement(name = "name") private String name; @XmlElementWrapper(name = "provinces") @XmlElement(name = "province") private List<Province> provinceList; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Province> getProvinceList() { return provinceList; } public void setProvinceList(List<Province> provinceList) { this.provinceList = provinceList; } }
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { "name", "provCity" }) public class Province { @XmlElement(name = "name") private String name; @XmlElement(name = "provCity") private String provCity; public String getProvCity() { return provCity; } public void setProvCity(String provCity) { this.provCity = provCity; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2、轉換工具類別
import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; /** * Jaxb 2.0 * */ public class JaxbXmlUtil { @SuppressWarnings("unchecked") public static <T> T xmlToBean(String xml, Class<T> beanClass) { try { JAXBContext jaxbContext = JAXBContext.newInstance(beanClass); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); T user = (T) unmarshaller.unmarshal(new StringReader(xml)); return user; } catch (JAXBException e) { e.printStackTrace(); return null; } } /**Bean转XML*/ public static String beanToXml(Object obj) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); //决定是否在转换成xml时同时进行格式化(即按标签自动换行,否则即是一行的xml) marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //Marshaller.JAXB_ENCODING xml的编码方式 marshaller.setProperty(Marshaller.JAXB_ENCODING, "utf-8"); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }
3、測試類別
import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.junit.Test; import com.tzz.test.util.xml.entity.Country; import com.tzz.test.util.xml.entity.Province; import com.tzz.util.xml.JaxbXmlUtil; public class TestJaxbBeanToXmlUtil { @Test public void testBeanToXml() { Country country = new Country(); country.setId(1); country.setCreateDate(new Date()); country.setName("中国"); List<Province> list = new ArrayList<Province>(); Province province = new Province(); province.setName("广东省"); province.setProvCity("广州市"); Province province2 = new Province(); province2.setName("湖南省"); province2.setProvCity("长沙市"); list.add(province); list.add(province2); country.setProvinceList(list); String xml = JaxbXmlUtil.beanToXml(country); System.out.println(xml); } @Test public void testXmlToBean() { String xml = "<?xml version='1.0' encoding='utf-8' ?>" + "<country>" + "<id>1</id>" + "<createDate>2016-03-10 09:36:01</createDate>" + "<name>中国</name>" + "<provinces>" + "<province><name>广东省</name><provCity>广州市</provCity></province>" + "<province><name>湖南省</name><provCity>长沙市</provCity></province>" + "</provinces>" + "</country>"; Country country = JaxbXmlUtil.xmlToBean(xml, Country.class); System.out.println(country.getId() + "--" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(country.getCreateDate()) + "--" + country.getName()); for (Province p : country.getProvinceList()) { System.out.println(p.getName() + "---" + p.getProvCity()); } } }
4、測試結果
4.1、執行testBeanToXml方法
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <country> <id>1</id> <createDate>2016-03-10 05:24:57</createDate> <name>中国</name> <provinces> <province> <name>广东省</name> <provCity>广州市</provCity> </province> <province> <name>湖南省</name> <provCity>长沙市</provCity> </province> </provinces> </country>
4.2、執行testXmlToBean方法
1--2016-03-10 09:36:01--中国 广东省---广州市 湖南省---长沙市
以上是Jaxb2實作Bean與xml互轉的範例程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

RSS和XML是用於網絡內容管理的工具。 RSS用於發布和訂閱內容,XML用於存儲和傳輸數據。它們的工作原理包括內容髮布、訂閱和更新推送。使用示例包括RSS發布博客文章和XML存儲書籍信息。

RSS文檔是基於XML的結構化文件,用於發布和訂閱頻繁更新的內容。它的主要作用包括:1)自動化內容更新,2)內容聚合,3)提高瀏覽效率。通過RSSfeed,用戶可以訂閱並及時獲取來自不同來源的最新信息。

RSS的XML結構包括:1.XML聲明和RSS版本,2.頻道(Channel),3.條目(Item)。這些部分構成了RSS文件的基礎,允許用戶通過解析XML數據來獲取和處理內容信息。

RSSFEEDSUSEXMLTOSYNDICATECONTENT; PARSINGTHEMINVOLVESLOADINGINGINGINGINSSTRUCTURE,andExtractingData.ApplicationsIncludeBuildBuildingNewSagGregatorSaterNewSagGregatorSator andTrackingPodcastepodcastepisodes。

RSS文檔的工作原理是通過XML文件發佈內容更新,用戶通過RSS閱讀器訂閱並接收通知。 1.內容髮布者創建並更新RSS文檔。 2.RSS閱讀器定期訪問並解析XML文件。 3.用戶瀏覽和閱讀更新內容。使用示例:訂閱TechCrunch的RSS源,只需複制鏈接到RSS閱讀器中即可。

使用XML構建RSSfeed的步驟如下:1.創建根元素並設置版本;2.添加channel元素及其基本信息;3.添加條目(item)元素,包括標題、鏈接和描述;4.轉換XML結構為字符串並輸出。通過這些步驟,你可以從零開始創建一個有效的RSSfeed,並通過添加額外的元素如發布日期和作者信息來增強其功能。

創建RSS文檔的步驟如下:1.使用XML格式編寫,根元素為,包含元素。 2.在內添加、、等元素描述頻道信息。 3.添加元素,每個代表一個內容條目,包含、、、等。 4.可選地添加和元素,豐富內容。 5.確保XML格式正確,使用在線工具驗證,優化性能並保持內容更新。

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。