[英]How to omit an XML tag on a request with JAXB and JAX-RS?
我正在學習JAX-RS並使用JAXB來編組/解組非常好的XML數據。 我的問題是回答一些請求,其中應省略一些XML元素。 這是一個例子:
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
@XmlAttribute
private int id;
@XmlElement
private String username;
@XmlElement
private String password;
Users類用於包裝用戶列表
@XmlRootElement(name = "users")
@XmlAccessorType(XmlAccessType.FIELD)
public class Users {
@XmlElement(name = "user")
private List<User> users = null;
public Users() {
}
public List<User> getUsers() {
return users;
}
public void setUsers(final List<User> users) {
this.users = users;
}
}
REST資源
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public Users getAllUsers() {
final ArrayList<User> users = new ArrayList<User>(userDB.values());
final Users userList = new Users();
userList.setUsers(users);
return userList;
}
以上產生以下輸出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<users>
<user id="1">
<username>user1</username>
<password>passwd0rd</password>
</user>
<user id="2">
<username>user2</username>
<password>passwd0rd</password>
</user>
</users>
所以問題是,是否有一種方法可以指示JAXB省略例如密碼元素(僅用於此請求)並具有如下輸出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<users>
<user id="1">
<username>user1</username>
</user>
<user id="2">
<username>user2</username>
</user>
</users>
謝謝你的指導!
您正在尋找的注釋是@XmlTransient 。 這不會映射您的字段,也不會在輸出中顯示任何請求。
但是,如果您只想為某些請求指定,那么我猜您必須為這些特定請求明確地將其設置為null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.