如何在不更改JAXB Web服务架构或XML输出的情况下参数化ArrayList属性?

时间:2015-10-05 14:30:51

标签: java arraylist jaxb wsdl jaxb2

我现有的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 ...注释?如果不编写个性化的序列化器,是否可以这样做?

0 个答案:

没有答案