Java annotations configuration to generate a rest response with application/xml type
The @XmlAccessorType(XmlAccessType.FIELD)
is required if you set @XmlElement
annotations on the fields instead of the getters methods
package dev.bookmarks.example;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "bookmarks")
public class BookmarksResponse {
@XmlElement(name = "bookmark", type = BookmarkDto.class)
private List<BookmarkDto> bookmarks;
public BookmarksResponse () {
}
public BookmarksResponse (List bookmarks) {
this.bookmarks= bookmarks;
}
public List<BookmarkDto> getAllBookmarks() {
return bookmarks;
}
public void setBookmarks(
List<Bookmark> bookmarks) {
this.bookmarks= bookmarks;
}
}
The BookmarkDto
class (getters and setters not shown for brevity):
package dev.bookmarks.example;
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode
@ToString
@XmlRootElement(name = "bookmark")
@XmlAccessorType(XmlAccessType.FIELD)
public class BookmarkDto {
@JsonProperty("id")
@XmlAttribute(name = "id")
Integer id;
@JsonProperty("name")
@XmlAttribute(name = "name")
String name;
@JsonProperty("url")
@XmlAttribute(name = "url")
String url;
public BookmarkDto() {
}
//getters and setters hidden for brevity
}
Would result in an xml response if you request with the Accept
header as Accept: application/xml
as the following
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookmarks>
<boomark id="1">
<name>How to filter results list in Angular with input text</name>
<url>https://www.codepedia.org/ama/how-to-filter-results-in-angular-example-with-input-text</url>
</bookmark>
<boomark id="2">
<name>Complete example of a CRUD API with Express GraphQL</name>
<url>https://www.codepedia.org/ama/complete-example-crud-api-express-graphql</url>
</bookmark>
</bookmarks
The Accept: application/json
response should look like the following
{
"bookmarks": [
{
"id": 1,
"name": "How to filter results list in Angular with input text",
"url": "https://www.codepedia.org/ama/how-to-filter-results-in-angular-example-with-input-text"
},
{
"id": 2,
"name": "Complete example of a CRUD API with Express GraphQL",
"url": "https://www.codepedia.org/ama/complete-example-crud-api-express-graphql"
}
]
}
Shared with from Codever.
👉 Use the Copy to mine
functionality to copy this snippet to your own personal collection and easy manage
your code snippets.
Codever is open source on Github ⭐🙏