您好我有一个需要使用XStream Api转换为XML的类,我面临的问题是收集格式,因为集合被转换为我想要的东西。我的代码:
Java类:
public class Adapter {
private String type;
private String adapterName;
private String adapterClass;
private HashMap<String, String> param;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getAdapterName() {
return adapterName;
}
public void setAdapterName(String adapterName) {
this.adapterName = adapterName;
}
public String getAdapterClass() {
return adapterClass;
}
public void setAdapterClass(String adapterClass) {
this.adapterClass = adapterClass;
}
public HashMap<String, String> getParam() {
return param;
}
public void setParam(HashMap<String, String> param) {
this.param = param;
}
}
我得到以下输出:
<adapter>
<type>connector</type>
<adapterName>SFTP-connector</adapterName>
<adapterClass>com.infinia.adapters.connector.SFTPConnector</adapterClass>
<param>
<entry>
<string>username</string>
<string>testuser</string>
</entry>
<entry>
<string>host</string>
<string>192.168.22.14</string>
</entry>
<entry>
<string>password</string>
<string>testPassword</string>
</entry>
</param>
</adapter>
<adapter>
然而,我期待以下输出:
<adapter>
<type>connector</type>
<adapterName>SFTP-connector</adapterName>
<adapterClass>TestValue</adapterClass>
<param>
<entry key="username" value="testuser"></entry>
<entry key="host" value="192.168.22.14"></entry>
<entry key="password" value="testPassword"> </entry>
</param>
</adapter>
<adapter>
答案 0 :(得分:0)
您可以使用NamedMapConverter来实现目标
XStream xstream = new XStream();
xstream.alias("adapter", Adapter.class);
NamedMapConverter m = new NamedMapConverter(xstream.getMapper(), "entry", "key", String.class, "value", String.class, true, true, xstream.getConverterLookup());
xstream.registerConverter(m);