2014-06-09 59 views
1

我有一個XML文件,如:JAXB - Java類的適當註釋

<ParentClass> 
    <FirstClass> 
     <Row> 
      <data1>...<data1> 
      <data2>...<data2> 
     </Row> 
     <Row> 
      <data1>...<data1> 
      <data2>...<data2> 
     </Row> 
    </FirstClass> 
    <SecondClass> 
     <Row> 
      <data1>...<data1> 
      <data2>...<data2> 
     </Row> 
     <Row> 
      <data1>...<data1> 
      <data2>...<data2> 
     </Row> 
    </SecondClass> 
    </ParentClass> 

我有如下的Java類:

@XmlRootElement(name = "ParentClass") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class ParentJavaClass 
{ 
    @XmlElement(name="FirstClass") 
    private List<FirstJavaClass> fc; 
    public List<FirstJavaClass> getFc() 
    { 
     return fc; 
    } 
    public void setFc(List<FirstJavaClass> fc) 
    { 
     this.fc = fc; 
    } 

    @XmlElement(name="SecondClass") 
    private List<SecondJavaClass> sc; 
    public List<SecondJavaClass> getSc() 
    { 
     return sc; 
    } 
    public void setSc(List<SecondJavaClass> sc) 
    { 
     this.sc = sc; 
    } 
} 

    @XmlType(name = "Row", namespace = "Fc") 
    @XmlAccessorType(XmlAccessType.FIELD) 
    public class FirstJavaClass 
    { 
    private String data1; 
    private String data2; 

    // getters & setters 
    } 

    @XmlType(name = "Row", namespace = "Sc") 
    @XmlAccessorType(XmlAccessType.FIELD) 
    public class SecondJavaClass 
    { 
    private String data1; 
    private String data2; 

    // getters & setters 
    } 

但是,當我打電話

final ParentJavaClass x = (ParentJavaClass) jaxbUnmarshaller.unmarshal(file); 

我的FirstJavaClass &的結果列表SecondJavaClass具有全部空值。我認爲「行」元素是讓我絆倒的東西,但我不確定如何正確註釋。 請協助。謝謝。

回答

1

你應該標註如下:

@XmlElementWrapper(name="FirstClass") 
@XmlElement(name="Row") 
private List<FirstJavaClass> fc; 

@XmlElementWrapper(name="SecondClass") 
@XmlElement(name="Row") 
private List<SecondJavaClass> sc; 

標註的意義:

  • @XmlElementWrapper相當於要嵌套您的收藏數據withing的元素。
  • FirstJavaClass的每個實例將對應嵌套在FirstClass元素中的元素。

的調試技巧

當你的JAXB對象模型不正確的解組,嘗試:

  1. 填充它,它編組到XML。
  2. 然後將此XML與您試圖解組的內容進行比較,以查看差異是什麼。
  3. 調整註釋,直到編組XML與您正在嘗試解組的編號相匹配
  4. 反編組XML。
+1

太棒了!現在有道理。謝謝。 – user3723491