Парсер predic8 wsdl останавливается после чтения инструкции include xsd

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

import com.predic8.wsdl.*; //This is the XML-parser I am using

Я вижу это, потому что это работает, когда я помещаю раздел типов в конец документа 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 обратно, чтобы он был нормальным.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
182
1

Ответы 1

Я только что выяснил, просмотрев другой вопрос, что это должно быть <xs: include schemaLocation = "DMS.xsd" /> Теперь все работает, как ожидалось.

См. Также переполнение стека

Другие вопросы по теме