2014-10-14 12 views
5

mam poniżej odpowiedź REST, które muszą być tworzone w kodzie:Odnośnie odpowiedzi spoczynku i XMLElement

<sample> 
    <tags> 
     <tag> 
      <name>ABC</name> 
      <Date>2014-10-14T12:30:05Z</ingress> 
     </tag> 
     <tag> 
      <name>DEF</name> 
      <Date>2014-10-14T12:30:05Z</ingress> 
     </tag> 
    </tags> 
</sample> 

Jednak jestem coraz

<sample> 
    <tags>   
     <name>ABC</name> 
     <Date>2014-10-14T12:30:05Z</ingress> 
    </tags> 
    <tags> 
     <name>DEF</name> 
     <Date>2014-10-14T12:30:05Z</ingress>   
    </tags> 
</sample> 

w response.Can ktoś proszę o pomoc jak deklaracja klasy Java, aby uzyskać pożądaną odpowiedź REST?

Oto kod Java:

@XmlRootElement(name = "sample") 
public class Sample { 
    private List<Tag> tags; 

    @XmlElement(name = "tags") 
    public List<Tag> getTags() { 
     return tags; 
    } 

    /** 
    * @param tags 
    *   the tags to set 
    */ 
    public void setTags(List<Tag> tags) { 
     this.tags = tags; 
    } 

} 

@XmlRootElement(name = "tag") 
public class Tag { 
    private String name; 
    private Date date; 

    /** 
    * @return the name 
    */ 
    @XmlElement(name = "name") 
    public String getName() { 
     return name; 
    } 

    /** 
    * @param name 
    *   the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * @return the date 
    */ 
    @XmlElement(name = "date") 
    public Date getDate() { 
     return date; 
    } 

    /** 
    * @param date 
    *   the date to set 
    */ 
    public void setDate(Date date) { 
     this.date = date; 
    } 
} 

Dzięki

+0

Proszę napisać kod Java. – Santosh

+0

Oto kod Java: – user3062513

+0

Musi istnieć inny kod, który faktycznie tworzy 'Tag/Tags' i marshalls, które. Opublikuj także ten kod. – Santosh

Odpowiedz

3
@XmlElement(name = "tags") 
List<Tag> tags; 

To w zasadzie brzmi, dla każdej pozycji na liście, należy utworzyć element o nazwie <tags>. W zasadzie wszystko, co masz, to element owijający wiele: <tags>.

kilka opcji, aby uzyskać kolejny „wyższego poziomu” element

Można utworzyć klasę do reprezentowania że „wyższego poziomu”, powiedzmy Tags

public class Tags { 
    protected List<Tag> tags; 

    @XmlElement(name = "tag") 
    public List<Tag> getTags() { 
     if (tags == null) { 
      tags = new ArrayList<>(); 
     } 
     return tags; 
    } 

    public void setTags(List<Tag> tags) { 
     this.tags = tags; 
    } 
} 

wtedy wystąpienie Tags jako właściwością Sample

@XmlRootElement(name = "sample") 
public class Sample { 
    private Tags tags; 

    @XmlElement(name = "tags") 
    public void setTags(Tags tags) { 
     this.tags = tags; 
    } 

    public Tags getTags() { 
     return tags; 
    } 
} 

LUB

Jeszcze prostszym rozwiązaniem jest po prostu użyć @XmlElementWrapper

Generuje element otoki wokół reprezentacji XML. To jest przede wszystkim przeznaczony do stosowania w celu wytworzenia otoki element XML wokół zbiorów

użyciu oryginalnego kodu, można proste dodawanie adnotacji do listy

@XmlRootElement(name = "sample") 
public class Sample { 
    private List<Tag> tags; 

    @XmlElementWrapper(name = "tags") 
    @XmlElement(name = "tag") 
    public List<Tag> getTags() { 
     if (tags == null) { 
      tags = new ArrayList<>(); 
     } 
     return tags; 
    } 

    public void setTags(List<Tag> tags) { 
     this.tags = tags; 
    } 
} 
1

można po prostu użyć @XmlElementWrapper adnotacji do dodaj element grupujący do swojej kolekcji.

@XmlElementWrapper 
@XmlElement(name = "tag") 
public List<Tag> getTags() { 
    return tags; 
} 

Uwaga:@XmlElement dotyczy każdego elementu w kolekcji.