如何使用JAXB和JAX-RS在请求上省略XML标记?
问题描述:
我正在学习JAX-RS并使用JAXB编组/解组XML数据,这非常有效。我的问题是回答一个请求,其中应该省略一些XML元素。下面是一个例子:如何使用JAXB和JAX-RS在请求上省略XML标记?
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
@XmlAttribute
private int id;
@XmlElement
private String username;
@XmlElement
private String password;
用户类被用来包裹用户
列表@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>
感谢您的指导!
将@ulab建议的值设置为null似乎效果很好! – Lazlo