3

xstream によって xml に変換されるクラスを作成しました。

@XStreamAsAttribute を追加して、属性として xmlns を追加しました。しかし、出力にネストされたタグとして追加されました

私のクラスファイルは次のとおりです

@XStreamAlias("GetConfigurationParametersResponse")
public class GetConfigurationParametersResponse
    extends BaseResponse
{
    @XStreamAlias("xmlns")
    @XStreamAsAttribute
    final String xmlns = "http://www.collab.net/teamforge/integratedapp";

    @XStreamAlias("xmlns:ns2")
    @XStreamAsAttribute 
    final String ns2="http://www.collab.net/teamforge/integratedapp";


    @XStreamImplicit(itemFieldName="ConfigurationParameter")
    protected List<ConfigurationParameter> configurationParameter;

    public List<ConfigurationParameter> getConfigurationParameter() {
        if (configurationParameter == null) {
            configurationParameter = new ArrayList<ConfigurationParameter>();
        }
        return this.configurationParameter;
    }

}

この出力は次のとおりです。

<com.collabnet.teamforge.ia.GetConfigurationParametersResponse>
<xmlns>http://www.collab.net/teamforge/integratedapp</xmlns>
<ns2>http://www.collab.net/teamforge/integratedapp</ns2>
</com.collabnet.teamforge.ia.GetConfigurationParametersResponse>

しかし、私は次のように出力する必要があります

<com.collabnet.teamforge.ia.GetConfigurationParametersResponse xmlns="http://www.collab.net/teamforge/integratedapp" xmlns:ns2="http://www.collab.net/teamforge/integratedapp">
</com.collabnet.teamforge.ia.GetConfigurationParametersResponse>

私が間違っている場所を見つけるのを手伝ってください。このチュートリアルに従いましたhttp://x-stream.github.io/annotations-tutorial.html

4

2 に答える 2

5

おそらく次のことを行う必要があります。

xstream.processAnnotations(GetConfigurationParametersResponse.class);

以下のみが呼び出されている場合:

 xstream.processAnnotations(BaseResponse.class);

次に、次のように@XStreamInclude注釈を使用できます。BaseResponse

@XStreamInclude({GetConfigurationParametersResponse.class})
public class BaseResponse {
}
于 2013-08-07T15:19:04.417 に答える
1

私にとってうまくいったのは:

xstream.autodetectAnnotations(true);
于 2015-08-11T21:10:34.887 に答える