簡體   English   中英

JAXB:解組具有相同值的不同XML元素

[英]JAXB: Unmarshalling of different XML elements with same values

關於大致相同的主題,有很多問題,但是我找不到確切的答案。 如果我錯過了,我深表歉意。

我正在嘗試解組具有共同邏輯元素但使用不同標簽定義的XML文件:

XML輸入文件

<xml>
  <animals>
    <dog>
      <bark>loud</bark>
    </dog>
    <cat>
      <meow>frail</meow>
    </cat>      
  </animals>
</xml>

實際上, <bark><meow>都隱藏了相同的概念,即動物的“音調”或“音量”,定義為String

我可以這樣做:

Animal.java

public abstract class Animal {

    public abstract String getVolume();

}

getVolume()Cat.javaDog.java實現getVolume()Dog.java返回this.barkthis.meow

但是,在Animal.java具有volume屬性似乎更干凈,並且以某種方式告訴JAXB將這兩個字段都映射到它。

我在想這個嗎? 您將如何實施?

(當然,我無法控制輸入的XML。如果可能的話,我也想避免使用MOXy的解決方案,因為向該項目尋求另一個依賴可能很困難。)

您將要:

  1. Animal類標記為@XmlTransient以將其刪除為映射類。
  2. 重寫每個子類中的getVolume()方法,對它進行注釋,以匹配該類的所需元素。

對於這個特定的模型,盡管我更喜歡每只動物都有一個volume元素。

JAXB實際上具有幾種多態機制。 您可以使用@XmlDescriminatorNode / @XmlDescrimintatorValue (Eclipse MOXy)或替換組。

以下是一些詳細信息和代碼示例: 替換組 ,說明

暫無
暫無

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

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