Обрабатывать любое поле в схеме wsdl, используя Java - PullRequest
0 голосов
/ 27 июня 2018

Я генерирую свой класс pojo с помощью wsdl, используя "wsimport" успешно Но в схеме wsdl есть «любые» поля. Поля генерируются как «Объект» в моем классе Java.

Схема wsdl:

<s:complexType name="Model1"> 
  <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="Model2">
       <s:complexType>
         <s:sequence>
           <s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
           <s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax"/>
         </s:sequence>
       </s:complexType>
    </s:element>
    <s:element minOccurs="0" maxOccurs="1" name="Response" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="Response_Str" type="s:string"/>
   </s:sequence>
 </s:complexType>
 ...
 ...

Сгенерированный класс с использованием wsimport:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Model1", propOrder = {
        "model2",
        "response",
        "responseStr"
})
public class Model1 {

    @XmlElement(name = "Model2")
    protected Object model2;
    @XmlElement(name = "Response")
    protected String response;
    @XmlElement(name = "Response_Str")
    protected String responseStr;

Схема Model2 приходит в ответ следующим образом:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <Response xmlns="...">
         <Result>
            <Model2>
               <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Temp" msdata:UseCurrentLocale="true">
                     <xs:complexType>
                        <xs:choice minOccurs="0" maxOccurs="unbounded">
                           <xs:element name="Temp">
                              <xs:complexType>
                                 <xs:sequence>
                                    <xs:element name="field1" type="xs:int" minOccurs="0"/>
                                    <xs:element name="field2" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0"/>
                                    ...
                                    ...
                                    ...
                                 </xs:sequence>
                              </xs:complexType>
                           </xs:element>
                        </xs:choice>
                     </xs:complexType>
                  </xs:element>
               </xs:schema>
               <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                  <NewDataSet xmlns="">
                     <Temp diffgr:id="Temp1" msdata:rowOrder="0">
                        <ID>20018243</ID>

Wsdl не существует схемы Model2, но схема находится в ответе.

Как я могу обработать схему в Java?

Как я могу разыграть ответ на "Object model2"?

...