2014-10-14 1 views
5

ich unter einer REST Antwort habe, die im Code erstellt werden muss:In Bezug auf REST Antwort und 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> 

Ich bin jedoch

<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> 

im response.Can immer jemand bitte helfen mir wie die Deklaration der Java-Klasse um die gewünschte REST-Antwort zu bekommen?

Hier ist der Java-Code:

@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; 
    } 
} 

Dank

+0

Bitte schreiben Sie den Java-Code. – Santosh

+0

Hier ist der Java-Code: – user3062513

+0

Es muss anderen Code geben, der tatsächlich "Tag/Tags" erzeugt und Marshalls. Posten Sie diesen Code auch. – Santosh

Antwort

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

Es liest grundsätzlich für jedes Element in der Liste, erstellen Sie ein Element <tags> benannt. Im Wesentlichen ist alles, was Sie haben, ein <subject> Element, das mehrere <tags> umschließt.

Ein paar Optionen eine andere „höherrangige“ Element erhalten

Sie eine Klasse „oberen Ebene“ schaffen, das zu repräsentieren, haben 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; 
    } 
} 

Dann eine Instanz von Tags sagen als eine Eigenschaft von 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; 
    } 
} 

OR

Eine noch einfachere Lösung ist nur @XmlElementWrapper zu verwenden

Erzeugt ein Wrapper-Element um XML-Darstellung. Dies ist in erster Linie ein Wrapper XML zu erzeugen Element um Sammlungen

Arbeiten mit dem Original-Code verwendet werden soll, können Sie einfach fügen Sie die Anmerkung zur Liste

@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

Sie einfach die @XmlElementWrapper Anmerkung verwenden Fügen Sie Ihrer Sammlung ein Gruppierungselement hinzu.

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

Hinweis:@XmlElement gilt in der Sammlung jedes Element.