0

我将 apache-cxf 用于 web 服务,生成的响应不包含值为 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>

我期待元素“description1”和“description2”作为SOAP响应,即使它们包含空值。但是SOAP响应不包含这些标签,我为它们设置了 null。请让我知道我哪里出错了?

4

1 回答 1

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 的元素,这意味着该元素可以为空而不会导致验证错误

看看这里。您已经在定义minOccurs="0"所以不需要nillable="true".

于 2012-09-14T14:18:04.750 回答