簡體   English   中英

解組具有多個同名元素的XML JAXB

[英]Unmarshalling XML JAXB with multiple elements same name

我正在嘗試解組具有多個具有相同名稱的元素的XML文檔。 我不確定是否需要創建我的bean的Arraylist並將其傳遞給unmarshaller。 我希望有人能給我一些指導來解決這個問題。 我試圖解析的XML是一個SOAP響應但我刪除了信封,所以我只有它的主體,它看起來像這樣:

<return>
    <row>
        <fkdevice>bddc228e-4774-18b3-9c64-e218cbef7a8x</fkdevice>
    </row>
    <row>
        <fkdevice>74a5a260-bbd9-0491-7c58-0b1983180d2c</fkdevice>
    </row>
    <row>
        <fkdevice>312b5326-d7f1-4fb6-b1d9-dd96bb016152</fkdevice>
    </row>
    <row>
        <fkdevice>ed110481-e1e1-4659-ae09-1d23d888292b</fkdevice>
    </row>
</return>

這是從一個有50多個字段的表返回的,但是我創建了一個testBean,我定義了fkdevice只是為了簡化我的bean看起來像這樣:

package beans;
//imports    

@XmlRootElement(name="return")
public class testBean {
   //I think I need an arraylist here because I have multiple elements with teh same name.
   public ArrayList<string> fkdevice;

   public ArrayList<String> getFkdevice(){
       return fkdevice;
   }

   public void setFkdevice(ArrayList<String> fkdevice){
       this.fkdevice = fkdevice;
   }
}

這給了我一個錯誤:1個IllegalAnnotationExceptions類計數有兩個同名“fkdevice”的屬性,它指向getter和setter。

任何信息都可能有所幫助,在此先感謝

也許是這樣的:

@XmlRootElement(name="return")
public class returnBean {
   private ArrayList<Row> rows;

   public ArrayList<Row> getRows(){
       return rows;
   }

   public void setRows(ArrayList<Row> rows){
       this.rows = rows;
   }
}

請注意,該字段現在是私有的。

然后你可能不需要注釋:

public class Row {
    private String fkdevice;

    public String getFkdevice() {
        return fkdevice;
    }

    public void setFkdevice(String val) {
        fkdevice = val;
    }
}

您的領域和方法都是公開的。 默認情況下,JAXB綁定每個公共字段和每個getter / setter對。

一種解決方案是使用@XmlAccessorType指定字段,並且僅將字段綁定到XML。

@XmlRootElement(name="return")
@XmlAccessorType( XmlAccessType.FIELD )
public class testBean {

    @XmlElement( name="fkdevice" )
    public ArrayList<string> fkdevice;
    ...
}

暫無
暫無

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

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