无法使用Xstream转换类的Map <string,string>

时间:2015-08-24 08:50:04

标签: java xml xstream

您好我有一个需要使用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>

1 个答案:

答案 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);
相关问题