Предсказатель парсер wsdl останавливается после прочтения включения оператора xsd - PullRequest
0 голосов
/ 02 мая 2018

Кажется, что предикат парсера wsdl останавливается после открытия включения файла wsd. Включение находится внутри раздела типов.

import com.predic8.wsdl. *; // Я использую XML-парсер

Я вижу это, потому что это работает, когда я помещаю раздел типов в конец документа wsdl:

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sch="com.xxxsys.webservices" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="com.xxxsys.webservices" targetNamespace="com.xxxsys.webservices">
<wsdl:message name="createMandateResponse">
    <wsdl:part element="tns:createMandateResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="createMandateRequest">
    <wsdl:part element="tns:createMandate" name="parameters"/>
</wsdl:message>
<wsdl:message name="checkMandateResponse">
    <wsdl:part element="tns:checkMandateResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="checkMandateRequest">
    <wsdl:part element="tns:checkMandate" name="parameters"/>
</wsdl:message> 
<wsdl:message name="availableResponse">
    <wsdl:part element="tns:availableResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="availableRequest">
    <wsdl:part element="tns:available" name="parameters"/>
</wsdl:message> 
<!--
<wsdl:message name="GeneralFault">
    <wsdl:part element="tns:GeneralFault" name="fault"/> 
</wsdl:message>
-->
<wsdl:portType name="DMSPort">
    <wsdl:operation name="createMandate">
        <wsdl:input message="tns:createMandateRequest" name="createMandateRequest" />
        <wsdl:output message="tns:createMandateResponse" name="createMandateResponse"/>
        <!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
    </wsdl:operation>
    <wsdl:operation name="checkMandate">
        <wsdl:input message="tns:checkMandateRequest" name="checkMandateRequest" /> 
        <wsdl:output message="tns:checkMandateResponse" name="checkMandateResponse"/>
        <!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
    </wsdl:operation>
    <wsdl:operation name="available">
        <wsdl:input message="tns:availableRequest" name="availableRequest" />   
        <wsdl:output message="tns:availableResponse" name="availableResponse"/>
        <!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DMSPortSoap11" type="tns:DMSPort">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="createMandate">
        <soap:operation soapAction=""/>
        <wsdl:input name="createMandateRequest">
            <soap:body use="literal"/>
        </wsdl:input>   
        <wsdl:output name="createMandateResponse">
            <soap:body use="literal"/>
        </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="checkMandate">
        <soap:operation soapAction=""/>
            <wsdl:input name="checkMandateRequest">
            <soap:body use="literal"/>
        </wsdl:input>           
        <wsdl:output name="checkMandateResponse">
            <soap:body use="literal"/>
        </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="available">
        <soap:operation soapAction=""/>
            <wsdl:input name="availableRequest">
            <soap:body use="literal"/>
        </wsdl:input>           
        <wsdl:output name="availableResponse">
            <soap:body use="literal"/>
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="DMSService">
    <wsdl:port binding="tns:DMSPortSoap11" name="DMSPortSoap11">
        <soap:address location="http://localhost:8481/ws"/>
    </wsdl:port>
</wsdl:service>
<wsdl:types>    
<!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">-->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices">
    <!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices" targetNamespace="com.xxxsys.webservices" elementFormDefault="qualified">-->
    <!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="com.xxxsys.webservices">-->
        <include schemaLocation="DMS.xsd"/>
        <!--<import namespace="com.xxxsys.webservices" schemaLocation="DMS.xsd"/>-->
    </xs:schema>
</wsdl:types>

Файл xsd выглядит так:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices"
       targetNamespace="com.xxxsys.webservices" elementFormDefault="qualified">

<xs:element name="createMandate">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="firstname" type="xs:string"/>
            <xs:element name="lastname" type="xs:string"/>
            <xs:element name="birthdate" type="xs:date"/>
            <xs:element name="iban" type="xs:string"/>
            <xs:element name="bic" type="xs:string"/>
            <xs:element name="newcustomer" type="xs:boolean"/>
            <xs:element name="templateid" type="xs:int"/>
        </xs:sequence>
    </xs:complexType> 
</xs:element>


<xs:element name="createMandateResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="mandatestatus" type="xs:string"/>    
            <xs:element name="mandateid" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>    
</xs:element>

<xs:element name="checkMandate">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="mandateid" type="xs:int"/>
        </xs:sequence>
    </xs:complexType> 
</xs:element>

<xs:element name="checkMandateResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="mandatestatus" type="xs:string"/>
        </xs:sequence>
    </xs:complexType> 
</xs:element>

<xs:element name="available">
    <xs:complexType>
        <xs:sequence>
        </xs:sequence>
    </xs:complexType> 
</xs:element>

<xs:element name="availableResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="isAvailable" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType> 
</xs:element>

<xs:element name="GeneralFault">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="message" type="xs:string"/>
        </xs:sequence>
    </xs:complexType> 
</xs:element>

Я бы хотел иметь возможность обрабатывать wsdl-файлы с разделом типов с включением вверху. И, таким образом, верните обратно файл wsdl, чтобы он стал нормальным.

1 Ответ

0 голосов
/ 02 мая 2018

Я только что выяснил, посмотрев на другой вопрос, что это должно быть Теперь все работает, как и ожидалось.

См. Также stackoverflow

...