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