簡體   English   中英

簡單的Java Xml到POJO的映射/綁定?

[英]Simple Java Xml to POJO mapping/binding?

我試圖找出將xml文件映射到普通的舊Java對象的最簡單方法。

注意:在我的示例中,xml與我想要的POJO不太匹配。

///////// THE XML
<?xml version="1.0" encoding="UTF-8"?>
<Animal>
  <standardName>
    <Name>Cat</Name>
  </standardName>
  <standardVersion>
    <VersionIdentifier>V02.00</VersionIdentifier>
  </standardVersion>
</Animal>


////// THE INTENDED POJO
class Animal
{
 private String name;
 private String versionIdentifier;
}

常規JAXB(帶有批注)將不起作用,因為JAXM元素名稱批注不允許我指定嵌套元素。 (即standardName / Name)。

我看過Jibx,但是它似乎過於復雜,並且沒有提供我想做的完整示例。

Castro似乎可以執行我想要的操作(使用映射文件),但是我想知道是否還有其他可能的解決方案。 (可能允許我跳過映射文件,而僅允許我在注釋中指定所有內容)。

謝謝

EclipseLink JAXB(MOXy)允許您執行要查找的基於路徑的映射:

@XmlRootElement 
class Animal 
{ 
 @XmlPath("standardName/Name/text()")
 private String name; 

 @XmlPath("standardVersion/VersionIdentifier/text()");
 private String versionIdentifier; 
} 

有關更多信息,請參見:

EclipseLink還允許使用外部配置文件來指定元數據:

本文可能對您有幫助...它只需要您知道xpath http://onjava.com/onjava/2007/09/07/schema-less-java-xml-data-binding-with-vtd-xml.html

Jakarta Commons Digester應該做您想要的。

另外,我建議編寫一個使用XPath從XML檢索元素的轉換類。

我認為JiBX是最好的(JAXB,Castor,XMLBeans等),尤其是因為我更喜歡映射文件而不是注釋。 誠然,它的學習曲線不錯,但是網站上有很多很好的例子。 您一定錯過了本教程

如果只采用一種方式(XML-> POJO),則可以使用Digester

旁注:與注解相比,我更喜歡映射文件,因為注解:

  • 使代碼混亂(尤其是在使用多個產品的注釋時)
  • 混合關注點(域層中的XML,數據庫等)
  • 只能綁定到單個XML(或數據庫或Web服務等)表示形式

暫無
暫無

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

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