簡體   English   中英

將XML導入Java-與自定義讀取文件相比,使用JAXB有什么優勢?

[英]Importing XML to Java - What advantages are there to use JAXB over custom-reading the file?

我很容易找到用於將XML導入Java代碼的JAXB,但是在看了一點之后,我開始懷疑它是否超出了我的實際需求。

我或其他用戶創建的XML應該相當簡單。 例如:

<Type>Armor Material</Type> //could be various types of parent objects
<Name>Steel</Name>              //object properties
<Toughness>10</Toughness>

<Type>Armor Material</Type>
<Name>Iron</Name>
<Toughness>7</Toughness>

關於我的問題的背景:我有一個用Java編寫的游戲,目的是在XML中定義許多特定類型的Object。 我希望使XML盡可能簡單,以方便用戶修改。

我知道如何讀取文件來創建自己的自定義解決方案-但我從未處理過編組/解組和JAXB。 我不會說謊-關於它的某件事使我感到恐懼,也許是因為它看起來像我不太了解的“黑匣子”。

與實施我已經知道可以工作的解決方案相比學習如何使它工作有明顯的優勢嗎?

您肯定要使用JAXB。

無論您的XML是簡單的還是復雜的,都編寫一個XML模式(xsd)文件。 無論如何,您都需要模式文件,因此您可以驗證正在讀取的文件。 使用xjc(JAXB的一部分)為XML模式的所有元素(帶有setter / getter的元素)生成Java類。 然后,讀取或寫入XML文件成為一種情況。

因為XML文件映射到Java對象或從Java對象映射,所以在Java中操作這些數據結構(創建或使用它們)非常容易。

JAXB是一個插件體系結構,可以使用很多開源插件來增強生成的類。 默認情況下,JAXB會自動生成所有的setter / getter,但是有些插件會生成equals / hashcode,流利的樣式方法,克隆等。甚至還有一個插件(hyperjaxb3)都會在生成的類上放置JPA注釋,因此您可以全部基於XML模式訪問XML-> Java->數據庫-> Java-> XML。

我從事過使用JAXB生成POJO的項目,即使我們不需要XML-與POJO的所有Java代碼相比,它編寫起來更快,維護XML模式也更容易。

如果您使用的是Java 8,那么動態樣式可能會非常適合

XmlDynamic xml = new XmlDynamic(
    "<items>" +
        "<item>" +
            "<type>Armor Material</type>" +
            "<name>Steel</name>" +
            "<toughness>10</toughness>" +
        "</item>" +
        "<item>" +
            "<type>Armor Material</type>" +
            "<name>Iron</name>" +
            "<toughness>7</toughness>" +
        "</item>" +
    "</items>"
);

xml.get("items|item|name").asString(); // "Steel"
xml.get("items|item[1]|toughness").convert().intoInteger(); // 7

參見https://github.com/alexheretic/dynamics#xml-dynamics

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM