<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java JAXB 教程 原文:http://zetcode.com/java/jaxb/ Java JAXB 教程顯示了如何使用 JAXB 庫來處理 XML。 這些示例將 Java 對象寫入 XML 文件,并將 XML 數據讀取到 Java 對象。 ## JAXB 用于 XML 綁定的 Java 架構(JAXB)是允許 Java 開發者將 Java 類映射到 XML 表示形式的軟件框架。 JAXB 支持將 Java 對象編組為 XML,然后將 XML 解組為 Java 對象。 在 Java 9 中,JAXB 已移至單獨的模塊`java.xml`中。 在 Java 9 和 Java 10 中,我們需要使用`--add-modules=java.xml.bind`選項。 在 Java 11 中,JAXB 已從 JDK 中刪除,我們需要通過 Maven 或 Gradle 將其作為單獨的庫添加到項目中。 在我們的示例中,我們使用 JDK 11 和 Maven 創建我們的應用。 ## JAXB 定義 編組是將 Java 對象轉換為 XML 文檔的過程。 解組是將 XML 文檔讀入 Java 對象的過程。 `JAXBContext`類提供客戶端到 JAXB API 的入口點。 它提供用于編組,解組和驗證的 API。 ## JAXB POM 設置 以下 POM 文件包含必需的 JAXB JAR。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>JavaWriteXmlJaxbEx</groupId> <artifactId>JavaWriteXmlJaxbEx</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.zetcode.JavaWriteXmlJaxbEx</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project> ``` 除了包括 JAXB 依賴項,我們還使用`maven-assembly-plugin`將所有依賴項打包到一個 JAR 中。 ## JAXB 編寫 XML 示例 在第一個示例中,我們將 Java 對象寫入 XML 文件。 `Book.java` ```java package com.zetcode; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "book") // Defining order @XmlType(propOrder = { "author", "name", "publisher", "isbn" }) public class Book { private String name; private String author; private String publisher; private String isbn; // Changing to title @XmlElement(name = "title") public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Book{"); sb.append("name='").append(name).append('\''); sb.append(", author='").append(author).append('\''); sb.append(", publisher='").append(publisher).append('\''); sb.append(", isbn='").append(isbn).append('\''); sb.append('}'); return sb.toString(); } } ``` 這是`Book` bean。 該 bean 將被轉換為特定的 XML 標簽。 ```java @XmlRootElement(name = "book") ``` 使用`@XmlRootElement`注解,我們定義 XML 標簽名稱。 ```java @XmlType(propOrder = { "author", "name", "publisher", "isbn" }) ``` 通過`@XmlType`的`propOrder`屬性,我們定義了子元素的順序。 ```java @XmlElement(name = "title") public String getName() { return name; } ``` 我們可以將默認元素名稱更改為`title`。 `BookStore.java` ```java package com.zetcode; import java.util.ArrayList; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; //This statement means that class "Bookstore.java" is the root-element of our example @XmlRootElement(namespace = "com.zetcode") public class BookStore { // XmLElementWrapper generates a wrapper element around XML representation @XmlElementWrapper(name = "bookList") // XmlElement sets the name of the entities @XmlElement(name = "book") private ArrayList<Book> bookList; private String name; private String location; public void setBookList(ArrayList<Book> bookList) { this.bookList = bookList; } public ArrayList<Book> getBooksList() { return bookList; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } } ``` `BookStore`是一個類,其中包含一個列表,我們在其中放置書本對象。 ```java @XmlRootElement(namespace = "com.zetcode") public class BookStore { ``` 我們用`@XmlRootElement`注解定義根元素。 ```java // XmLElementWrapper generates a wrapper element around XML representation @XmlElementWrapper(name = "bookList") // XmlElement sets the name of the entities @XmlElement(name = "book") private ArrayList<Book> bookList; ``` `@XmlElementWrapper`注解在`book`元素周圍定義了包裝元素。 `@XmlElement`注解定義包裝器內的 XML 元素的名稱。 `JavaWriteXmlJaxbEx.java` ```java package com.zetcode; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import java.io.File; import java.util.ArrayList; public class JavaWriteXmlJaxbEx { private static final String BOOKSTORE_XML = "src/main/resources/bookstore.xml"; public static void main(String[] args) throws JAXBException { var bookList = new ArrayList<Book>(); // create books var book1 = new Book(); book1.setIsbn("978-0060554736"); book1.setName("The Game"); book1.setAuthor("Neil Strauss"); book1.setPublisher("Harpercollins"); bookList.add(book1); var book2 = new Book(); book2.setIsbn("978-3832180577"); book2.setName("Feuchtgebiete"); book2.setAuthor("Charlotte Roche"); book2.setPublisher("Dumont Buchverlag"); bookList.add(book2); // create bookstore, assign books var bookstore = new BookStore(); bookstore.setName("Fraport Bookstore"); bookstore.setLocation("Livres belles"); bookstore.setBookList(bookList); // create JAXB context and instantiate marshaller var context = JAXBContext.newInstance(BookStore.class); var m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to System.out m.marshal(bookstore, System.out); // Write to File m.marshal(bookstore, new File(BOOKSTORE_XML)); } } ``` 在示例中,我們創建書對象,將它們添加到書店,然后將書店轉換為 XML 文件。 ```java // create books var book1 = new Book(); book1.setIsbn("978-0060554736"); book1.setName("The Game"); book1.setAuthor("Neil Strauss"); book1.setPublisher("Harpercollins"); bookList.add(book1); var book2 = new Book(); book2.setIsbn("978-3832180577"); book2.setName("Feuchtgebiete"); book2.setAuthor("Charlotte Roche"); book2.setPublisher("Dumont Buchverlag"); bookList.add(book2); ``` 我們創建兩個書本對象。 ```java // create bookstore, assign books var bookstore = new BookStore(); bookstore.setName("Fraport Bookstore"); bookstore.setLocation("Livres belles"); bookstore.setBookList(bookList); ``` 創建了一個書店并將書籍放入其中。 ```java // create JAXB context and instantiate marshaller var context = JAXBContext.newInstance(BookStore.class); ``` 我們創建一個新的`JAXBContext`。 我們傳遞新上下文對象必須識別的類的列表。 (在我們的例子中,這是一類。) ```java var m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); ``` 從上下文中,我們得到了`createMarshaller()`的編組器。 我們設置一個屬性以獲取格式化輸出。 ```java // Write to System.out m.marshal(bookstore, System.out); // Write to File m.marshal(bookstore, new File(BOOKSTORE_XML)); ``` 我們將數據寫入系統輸出和文件中。 ## JAXB 讀取 XML 示例 在第二個示例中,我們將編組的數據讀回到 Java 對象中。 `JavaReadXmlJaxbEx.java` ```java package com.zetcode; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; public class JavaReadXmlJaxbEx { private static final String BOOKSTORE_XML = "src/main/resources/bookstore.xml"; public static void main(String[] args) throws JAXBException, FileNotFoundException { // create JAXB context and unmarshaller var context = JAXBContext.newInstance(BookStore.class); var um = context.createUnmarshaller(); var bookstore = (BookStore) um.unmarshal(new InputStreamReader( new FileInputStream(BOOKSTORE_XML), StandardCharsets.UTF_8)); var bookList = bookstore.getBooksList(); bookList.forEach((book) -> { System.out.println(book); }); } } ``` 該示例從`bookstore.xml`文檔中讀取書籍。 ```java // create JAXB context and unmarshaller var context = JAXBContext.newInstance(BookStore.class); var um = context.createUnmarshaller(); ``` 我們創建一個 JAXB 上下文并獲得一個新的解組器。 ```java var bookstore = (BookStore) um.unmarshal(new InputStreamReader( new FileInputStream(BOOKSTORE_XML), StandardCharsets.UTF_8)); ``` 使用`unmarshal()`,我們從 XML 文檔中讀取數據。 ```java var bookList = bookstore.getBooksList(); bookList.forEach((book) -> { System.out.println(book); }); ``` 我們獲得書籍列表并對其進行遍歷。 ```java Book{name='The Game', author='Neil Strauss', publisher='Harpercollins', isbn='978-0060554736'} Book{name='Feuchtgebiete', author='Charlotte Roche', publisher='Dumont Buchverlag', isbn='978-3832180577'} ``` 這是輸出。 在本教程中,我們已經使用 Java JAXB 庫讀寫 XML 文件。 您可能也對相關教程感興趣: [Java DOM 教程](/java/dom/), [Java SAX 教程](/java/sax/), [Java JSON 處理教程](/java/jsonp/)和 [Java 教程](/lang/java/) 。
                  <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>

                              哎呀哎呀视频在线观看