我现有的Java应用程序通过Web Services公开接口。我试图在不改变Web服务模式或结果XML的情况下参数化ArrayList属性。例如,我正在使用类:
public class User {
private ArrayList pricelists;
public ArrayList getPricelists() { return pricelists; }
public void setPricelists(ArrayList newPricelists) { this.pricelists = newPricelists; }
}
当从Java创建WSDL Schema时,结果行如下所示:
<xs:element maxOccurs="unbounded" minOccurs="0" name="pricelists" nillable="true" type="xs:anyType"/>
现在,当我参数化ArrayList并添加
时private ArrayList<Pricelist> pricelists;
WSDL Schema如下所示:
<xs:element maxOccurs="unbounded" minOccurs="0" name="pricelists" nillable="true" type="tns:Pricelist"/>
我设法通过添加属性将其放回去:
@XmlSchemaType(name="anyType")
public ArrayList getPricelists() { return pricelists; }
现在我们来解决这个问题。当对象被编组为XML时,我得到以下XML:
<pricelists>
<lastUpdate>1386659150085</lastUpdate>
...
</pricelists>
,而不是:
<pricelists xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Pricelist">
<lastUpdate>1386659150085</lastUpdate>
...
</pricelists>
如何添加缺少的
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Pricelist"
属性与@XML ...注释?如果不编写个性化的序列化器,是否可以这样做?