没有获取“null”中哪个值的Web服务响应中的元素

时间:2012-09-14 14:07:11

标签: java soap cxf

我正在使用apache-cxf进行webservice,生成的响应不包含值为null的元素(比如java.lang.String类型)。 以下是xsd:

<xs:complexType name="venueDetails">
    <xs:sequence>
        <xs:element minOccurs="0" name="contactDetails" type="xs:string"/>
        <xs:element minOccurs="0" name="date" type="xs:string"/>
        <xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string" nillable = "true"/>
        <xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string" nillable = "true"/>
        <xs:element minOccurs="0" name="name" type="xs:string"/>
        <xs:element minOccurs="0" name="placePicture" type="xs:string"/>
        <xs:element minOccurs="0" name="time" type="xs:string"/>
    </xs:sequence>
</xs:complexType>

我期待SOAP响应中的元素“description1”和“description2”,即使它们包含空值。但SOAP响应不包含这些标记,我为它们添加了null。 请告诉我哪里出错了?

1 个答案:

答案 0 :(得分:1)

而不是使用:

    <xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string" nillable = "true"/>
    <xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string" nillable = "true"/>

尝试使用:

    <xs:element minOccurs="0" maxOccurs="1" name="description1" type="xs:string"/>
    <xs:element minOccurs="0" maxOccurs="1" name="description2" type="xs:string"/>
  

可以为nillable的元素,意味着元素可以是空的   没有导致验证错误

看看here。您已定义minOccurs="0",因此不需要nillable="true"