我需要根据以下场景
使用Jersey格式化restful服务的输出(xml)我有一个带键值对的类如下。
@XmlRootElement(name="columnValues")
public class KeyValueDTO {
private String key;
private String val;
@XmlElement(name="column")
public String getKey() {
return key;
}
@XmlElement(name="value")
public String getVal() {
return val;
}
}
假设我有这样的列表,由休息服务返回:
List<KeyValueDTO> mylist = new ArrayList<KeyValueDTO>();
KeyValueDTO dto1 = new KeyValueDTO();
dto1.key = "Name";
dto1.val = "alex";
KeyValueDTO dto2 = new KeyValueDTO();
dto2.key = "Age";
dto2.val = 23
mylist.add(dto1);
mylist.add(dt02);
我想生成输出如下
<Name>alex</Name>
<Age>20</Age>
但目前正在提供以下输出
<column>Name</column>
<value>alex</column>
<column>Age</column>
<value>20</column>
任何人都可以告诉我如何实现这一目标吗?
答案 0 :(得分:0)
您可以尝试使用XmlAdapter:
public class KeyValueAdapter extends XmlAdapter<String, List<KeyValueDTO>> {
@Override
public List<KeyValueDTO> unmarshal(String v) throws Exception {
// Needs implementation
return null;
}
@Override
public String marshal(List<KeyValueDTO> vs) throws Exception {
StringBuffer buffer = new StringBuffer();
for (KeyValueDTO v: vs) {
buffer.append(String.format("<%s>%s</%1$s>", v.key, v.val));
}
return buffer.toString();
}
}
然后将该适配器添加到您的bean:
@XmlRootElement
public static class Wrapper {
@XmlJavaTypeAdapter(KeyValueAdapter.class)
List<KeyValueDTO> dtos;
}