Pregunta

El servicio web wsdl contiene el siguiente esquema:

<xs:complexType name="DocumentSearchInfo">
    <xs:sequence>
     ...
       <xs:element minOccurs="0" name="Industries" nillable="true" type="tns:ListCondition">
        <xs:annotation>
          <xs:appinfo>
            <DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
          </xs:appinfo>
        </xs:annotation>
       </xs:element>
   ...
    </xs:sequence>
  </xs:complexType>

Este código se generó agregando una referencia web en NetBeans 6.7:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DocumentSearchInfo", propOrder = {
    "analysts",
    "companyIDCondition",
    "contributorCondition",
    "countries",
    "dateRange",
    "documentIDCondition",
    "documentPageCondition",
    "industries",
    "keywordCondition",
    "languages",
    "profileID",
    "purchasedOnly",
    "regions",
    "researchCategories",
    "researchProduct"
})

    public class DocumentSearchInfo {
    ...
      @XmlElementRef(name = "Industries", namespace = "http://somenshere", type = JAXBElement.class)
        protected JAXBElement<ListCondition> industries;
    ...
    }

que, a su vez, se serializa en

<ns2:SearchInfo>
 ...
   <ns2:ListCondition>
     <ns2:Values>
       <ns3:string>1385</ns3:string>
       <ns3:string>1386</ns3:string>
     </ns2:Values>
   </ns2:ListCondition>
 ...
</ns2:SearchInfo>

Espero ver 'Industrias', no 'ListCondition' en este XML.

No tuve problemas para consumir este servicio con .net: tanto svcutil como wsdl.exe funcionan bien independientemente del serializador utilizado, pero parece que me falta totalmente algo obvio sobre la serialización en Java.

¿Alguien puede ayudar?

¿Fue útil?

Solución

Resuelto. Debería haber llamado al método createDocumentSearchInfoIndustries de ObjectFactory. Muy diferente de lo que estaba acostumbrado en .net)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top