簡體   English   中英

如何使用JAXB和JAX-RS省略請求中的XML標記?

[英]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.

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