日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

jaxb需要jar包吗_JAXB –不需要注释

發(fā)布時(shí)間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jaxb需要jar包吗_JAXB –不需要注释 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

jaxb需要jar包嗎

似乎有一個(gè)誤解,認(rèn)為在模型上需要注釋才能使用JAXB(JSR-222)實(shí)現(xiàn)。 事實(shí)是,JAXB是例外配置,因此僅當(dāng)您要覆蓋默認(rèn)行為時(shí)才需要注釋。 在此示例中,我將演示如何在不提供任何元數(shù)據(jù)的情況下使用JAXB。

領(lǐng)域模型

在此示例中,我將使用以下域模型。 注意如何沒(méi)有任何類(lèi)型的注釋。

顧客

在此示例中, 客戶(hù)是根對(duì)象。 通常,我們將使用@XmlRootElement對(duì)其進(jìn)行注釋 。 稍后在演示代碼中,您將看到我們?nèi)绾问褂肑AXBElement實(shí)例。

package blog.defaults;import java.util.List;public class Customer {private String firstName;private String lastName;private List<PhoneNumber> phoneNumbers;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public List<PhoneNumber> getPhoneNumbers() {return phoneNumbers;}public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {this.phoneNumbers = phoneNumbers;}}

電話號(hào)碼

我特意為此類(lèi)中的字段指定了廢話名稱(chēng),以便稍后在查看XML時(shí),您將能夠看到默認(rèn)情況下元素名稱(chēng)是從屬性而不是字段派生的。

package blog.defaults;public class PhoneNumber {private String foo;private String bar;public String getType() {return foo;}public void setType(String type) {this.foo = type;}public String getNumber() {return bar;}public void setNumber(String number) {this.bar = number;}}

示范代碼

由于我們沒(méi)有使用@XmlRootElement (或@XmlElementDecl )將根元素與Customer類(lèi)相關(guān)聯(lián),因此我們需要告訴JAXB我們要將XML文檔解組到哪個(gè)類(lèi)。 這可以通過(guò)使用采用Class參數(shù)(第14行)的解組方法之一來(lái)完成。 這將返回J AXBElement ,然后通過(guò)在其上調(diào)用getValue來(lái)訪問(wèn)Customer對(duì)象(第15行)。 為了將對(duì)象封送回XML,我們需要確保將其包裝在JAXBElement中以提供根元素信息(第17行)。

package blog.defaults;import javax.xml.bind.*; import javax.xml.namespace.QName; import javax.xml.transform.stream.StreamSource;public class Demo {public static void main(String[] args) throws Exception {JAXBContext jc = JAXBContext.newInstance(Customer.class);StreamSource xml = new StreamSource("src/blog/defaults/input.xml");Unmarshaller unmarshaller = jc.createUnmarshaller();JAXBElement<Customer> je1 = unmarshaller.unmarshal(xml, Customer.class);Customer customer = je1.getValue();JAXBElement<Customer> je2 = new JAXBElement<Customer>(new QName("customer"), Customer.class, customer);Marshaller marshaller = jc.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);marshaller.marshal(je2, System.out);}}

input.xml /輸出

以下是運(yùn)行演示代碼的輸入和輸出。 我們首先看到的是,它是數(shù)據(jù)的非常合理的XML表示形式,沒(méi)有任何JAXB工件。 默認(rèn)情況下,JAXB會(huì)將所有內(nèi)容封送為XML元素,根據(jù)PhoneNumber類(lèi),我們看到元素名稱(chēng)是從屬性名稱(chēng)派生的。

<?xml version="1.0" encoding="UTF-8"?> <customer><firstName>Jane</firstName><lastName>Doe</lastName><phoneNumbers><number>555-1111</number><type>work</type></phoneNumbers><phoneNumbers><number>555-2222</number><type>home</type></phoneNumbers> </customer>

進(jìn)一步閱讀

如果您喜歡這篇文章,那么您可能也會(huì)對(duì)以下內(nèi)容感興趣:

  • 該博客上的大多數(shù)文章都描述了如何利用JAXB元數(shù)據(jù)的功能來(lái)支持不同的用例,我邀請(qǐng)您檢查一下它們:
    • http://blog.bdoughan.com/?tag=jaxb
  • 如果您希望在不使用批注的情況下指定元數(shù)據(jù),則可能對(duì)EclipseLink JAXB(MOXy)的外部映射文檔感興趣:
    • 擴(kuò)展JAXB –將元數(shù)據(jù)表示為XML
    • 擴(kuò)展JAXB –將元數(shù)據(jù)表示為JSON

參考: JAXB – Java XML和JSON綁定博客中的JCG合作伙伴 Blaise Doughan 不需要注釋 。


翻譯自: https://www.javacodegeeks.com/2012/07/jaxb-no-annotations-required.html

jaxb需要jar包嗎

總結(jié)

以上是生活随笔為你收集整理的jaxb需要jar包吗_JAXB –不需要注释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。