2013-08-07 2 views
1

Я написал класс, который будет преобразован xstream в xml.XStreamAsAttribute не добавляя как атрибут - xstream

Я добавил @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

ответ

3

Вы, вероятно, нужно сделать следующее:

xstream.processAnnotations(GetConfigurationParametersResponse.class); 

Если только вызывается следующим образом:

xstream.processAnnotations(BaseResponse.class); 

Тогда вы могли бы использовать @XStreamInclude аннотацию на BaseResponse как следует:

@XStreamInclude({GetConfigurationParametersResponse.class}) 
public class BaseResponse { 
} 
0

Что для меня работало:

xstream.autodetectAnnotations(true);