У меня есть два класса «Пользователи» и «Пользователь», «Пользователи» имеют список пользователей, используя аннотацию @XstreamImplicit:
@Data
@XStreamAlias("users")
public class Users {
@JsonIgnore
@XStreamAsAttribute
@XStreamAlias("xmlns:xsd")
final String xmlnsXsd = "http://www.w3.org/2001/XMLSchema";
@JsonIgnore
@XStreamAsAttribute
@XStreamAlias("xmlns:xsi")
final String xmlnsXsi = "http://www.w3.org/2001/XMLSchema-instance";
@XStreamImplicit(itemFieldName = "user")
private List<User> users = new ArrayList<>();
}
@XStreamAlias("user")
@Data
public class User {
@JsonIgnore
@XStreamAsAttribute
@XStreamAlias("xmlns:xsd")
final String xmlnsXsd = "http://www.w3.org/2001/XMLSchema";
@JsonIgnore
@XStreamAsAttribute
@XStreamAlias("xmlns:xsi")
final String xmlnsXsi = "http://www.w3.org/2001/XMLSchema-instance";
String emailAddress;
String userId;
String status;
}
Когда клиент отправляет массовый запрос, мы возвращаем пользователей, а когда они отправляют один запрос, мы возвращаем пользователя. он работает нормально, за исключением того, что в массовом ответе он содержит атрибуты xstream для пользователей и пользователей, поэтому он выглядит следующим образом:
<users xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">. <-- Users attribute
<user xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <-- User attribute
<userId>12345</memberId>
<status>active</status>
</user>
<user xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>46587</memberId>
<status>inactive</status>
</user>
</users>
если я удалю атрибут xmlattribute для пользователя, то единственный ответ будет выглядеть следующим образом:
<user> <-- no attribute
<xid>099A4F82-4929-494B-9722-3F7F6E5930B5</xid>
</user>
как я могу подавить атрибут в User, тогда это массовый ответ?