<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # JAXB 注解 > 原文: [https://howtodoinjava.com/jaxb/jaxb-annotations/](https://howtodoinjava.com/jaxb/jaxb-annotations/) 詳細了解 **JAXB 注解**及其在編組和解組操作期間的用法。 ## 1)JAXB 注解列表 | 注解 | 范圍 | 描述 | | --- | --- | --- | | [`@XmlRootElement`](#XmlRootElement) | 類,枚舉 | 定義 XML 根元素。 根 Java 類在創建時需要在 JAXB 上下文中注冊。 | | [`@XmlAccessorType`](#XmlAccessorType) | 包,類 | 定義 JAXB 引擎用于綁定的 Java 類的字段和屬性。 它具有四個值:`PUBLIC_MEMBER`,`FIELD`,`PROPERTY`和`NONE`。 | | [`@XmlAccessorOrder`](#XmlAccessorOrder) | 包,類 | 定義子項的順序。 | | [`@XmlType`](#XmlType) | 類,枚舉 | 將 Java 類映射到架構類型。 它定義了其子類型的名稱和順序。 | | [`@XmlElement`](#XmlElement) | 字段 | 將字段或屬性映射到 XML 元素 | | [`@XmlAttribute`](#XmlAttribute) | 字段 | 將字段或屬性映射到 XML 屬性 | | [`@XmlTransient`](#XmlTransient) | 字段 | 防止將字段或屬性映射到 XML 模式 | | [`@XmlValue`](#XmlValue) | 字段 | 將字段或屬性映射到 XML 標記上的文本值。 | | [`@XmlList`](#XmlList) | 字段,參數 | 將集合映射到以空格分隔的值列表。 | | [`@XmlElementWrapper`](#XmlElementWrapper) | 字段 | 將 Java 集合映射到 XML 包的集合 | > 閱讀更多:[將 Java 對象轉換為 XML](https://howtodoinjava.com/jaxb/write-object-to-xml/) #### 1.1)`@XmlRootElement` 這將類或枚舉類型映射到 XML 根元素。 當使用`@XmlRootElement`注解對頂級類或枚舉類型進行注解時,則其值將表示為 XML 文檔中的 XML 元素。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.PROPERTY) public class Employee implements Serializable { //More code } ``` 以上將導致: ```java <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <employee> //.... </employee> ``` #### 1.2)`@XmlAccessorType` 它定義 JAXB 引擎用來包含到生成的 XML 中的 Java 類的字段或屬性。 它有四個可能的值。 * `FIELD` – 綁定到 JAXB 的類中的每個非靜態,非瞬態字段都將自動綁定到 XML,除非由`XmlTransient`注解。 * `NONE` – 沒有任何字段或屬性綁定到 XML,除非使用某些 JAXB 注解專門對其進行注解。 * `PROPERTY` – 綁定到 JAXB 的類中的每個獲取器/設置器對將自動綁定到 XML,除非由`XmlTransient`注解。 * `PUBLIC_MEMBER` – 每個公開獲取/設置對和每個公開字段都將自動綁定到 XML,除非由`XmlTransient`注解。 * 默認值為`PUBLIC_MEMBER`。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { private Integer id; private String firstName; private String lastName; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <employee> <firstName>Lokesh</firstName> <id>1</id> <lastName>Gupta</lastName> </employee> ``` #### 1.3)`@XmlAccessorOrder` 控制類中字段和屬性的順序。 您可以具有預定義的值`ALPHABETICAL`或`UNDEFINED`。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { private Integer id; private String firstName; private String lastName; private Department department; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8"?> <employee> <department> <id>101</id> <name>IT</name> </department> <firstName>Lokesh</firstName> <id>1</id> <lastName>Gupta</lastName> </employee> ``` #### 1.4)`@XmlType` 它將 Java 類或枚舉類型映射到架構類型。 它定義了其子代的類型名稱,命名空間和順序。 它用于將架構中的元素與模型中的元素進行匹配。 ```java @XmlRootElement(name = "employee") @XmlType(propOrder={"id", "firstName" , "lastName", "department" }) public class Employee implements Serializable { private Integer id; private String firstName; private String lastName; private Department department; } ``` #### 1.5)`@XmlElement` 將 JavaBean 屬性映射到從屬性名稱派生的 XML 元素。 ```java @XmlRootElement(name = "employee") public class Employee implements Serializable { @XmlElement(name=employeeId) private Integer id; @XmlElement private String firstName; private String lastName; private Department department; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8"?> <employee> <employeeId>1</employeeId> <firstName>Lokesh</firstName> </employee> ``` #### 1.6)`@XmlAttribute` 將 JavaBean 屬性映射到 XML 屬性。 ```java @XmlRootElement(name = "employee") public class Employee implements Serializable { @XmlAttribute private Integer id; private String firstName; private String lastName; private Department department; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8"?> <employee id="1"> <department> <id>101</id> <name>IT</name> </department> <firstName>Lokesh</firstName> <lastName>Gupta</lastName> </employee> ``` #### 1.7)`@XmlTransient` 防止將 JavaBean 屬性/類型映射到 XML 表示形式。 當放置在一個類上時,它指示該類不應單獨映射到 XML。 此類的屬性將與其派生類一起映射到 XML,就好像該類是內聯的一樣。 `@XmlTransient`與所有其他 JAXB 定義的注解互斥。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { @XmlTransient private Integer id; private String firstName; private String lastName; private Department department; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8"?> <employee> <firstName>Lokesh</firstName> <lastName>Gupta</lastName> <department> <id>101</id> <name>IT</name> </department> </employee> ``` #### 1.8)`@XmlValue` 允許將類映射到具有`simpleContent`或 XML Schema 簡單類型的 XML Schema 復雜類型。 它與架構映射到模型映射的關系更大。 #### 1.9)`@XmlList` 用于將屬性映射到列表簡單類型。 它允許將多個值表示為單個元素中的**由空格分隔的標記**。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { private List<String> hobbies; } // <?xml version="1.0" encoding="UTF-8"?> <employee> <hobbies>Swimming</hobbies> <hobbies>Playing</hobbies> <hobbies>Karate</hobbies> </employee> ``` 使用`@XmlList`之后,觀察輸出。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { @XmlList private List<String> hobbies; } // <?xml version="1.0" encoding="UTF-8"?> <employee> <hobbies>Swimming Playing Karate</hobbies> </employee> ``` ] #### 1.10)`@XmlElementWrapper` 圍繞 XML 表示生成包器元素。 它主要用于在集合周圍產生包 XML 元素。 因此,它必須與`collection`屬性一起使用。 ```java @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { @XmlElementWrapper(name="hobbies") @XmlElement(name="hobby") private List<String> hobbies; } ``` 以上將產生: ```java <?xml version="1.0" encoding="UTF-8"?> <employee> <hobbies> <hobby>Swimming</hobby> <hobby>Playing</hobby> <hobby>Karate</hobby> </hobbies> </employee> ``` ## 2)JAXB 注解示例 學習在模型類上應用 JAXB 注解,然后將對象編組到 XML 文件中。 ```java package com.howtodoinjava.demo.model; import java.io.Serializable; 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; @XmlRootElement(name = "employee") @XmlAccessorType(XmlAccessType.FIELD) public class Employee implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String firstName; private String lastName; private Department department; @XmlElementWrapper(name="hobbies") @XmlElement(name="hobby") private List<String> hobbies; public Employee() { super(); } public Employee(int id, String fName, String lName, Department department) { super(); this.id = id; this.firstName = fName; this.lastName = lName; this.department = department; } //Setters and Getters } ``` ```java package com.howtodoinjava.demo; import java.io.File; import java.util.Arrays; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import com.howtodoinjava.demo.model.Department; import com.howtodoinjava.demo.model.Employee; public class JaxbExample { public static void main(String[] args) { Employee employee = new Employee(1, "Lokesh", "Gupta", new Department(101, "IT")); employee.setHobbies(Arrays.asList("Swimming","Playing", "Karate")); jaxbObjectToXML(employee); } private static void jaxbObjectToXML(Employee employee) { try { JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // To format XML //Print XML String to Console jaxbMarshaller.marshal(employee, new File("employee.xml")); } catch (JAXBException e) { e.printStackTrace(); } } } ``` ```java <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <employee> <id>1</id> <firstName>Lokesh</firstName> <lastName>Gupta</lastName> <department> <id>101</id> <name>IT</name> </department> <hobbies> <hobby>Swimming</hobby> <hobby>Playing</hobby> <hobby>Karate</hobby> </hobbies> </employee> ``` 將我的問題放在評論部分。 學習愉快! 參考: [JAXB 注解 Java 文檔](https://docs.oracle.com/javaee/6/api/javax/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看