Próbuję przeanalizować plik WSDL, aby uzyskać operacje, punkt końcowy i przykładowy ładunek. WSDL we wprowadzonym przez użytkownika. Nie mogę znaleźć samouczka, aby to zrobić.Prosty sposób analizy pliku WSDL
Mogę znaleźć tylko te, które generują kod źródłowy, którego nie potrzebuję. Próbowałem używać XBeans, ale najwyraźniej potrzebuję Saxona. Czy istnieje prosty, lekki sposób, aby to zrobić bez Saxona?
E.g.
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace=
"http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace=
"http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol"
type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetLastTradePriceInput">
<part name="body" element=
"xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding"
type="tns:StockQuotePortType">
<soap:binding style="document"
transport=
"http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation
soapAction=
"http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort"
binding="tns:StockQuoteBinding">
<soap:address location=
"http://example.com/stockquote"/>
</port>
</service>
</definitions>
powinien dostać operacje: GetLastTradePrice, GetLastTradePrice
Endpoint: StockQuotePort
Sample Ładowność:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://example.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:TradePriceRequest/>
</soapenv:Body>
</soapenv:Envelope>
To jakby co robi SoapUI. Ale głównie chodzi mi o to, aby móc analizować WSDL. Nieco więcej kontekstu polega na przesłaniu pliku WSDL, a następnie wyświetleniu wyniku w aplikacji GWT (przesyłanie pliku musi nastąpić w serwlecie). Więc muszę przeanalizować plik i utworzyć obiekt, który GWT będzie w stanie zrozumieć.
Masz przykład wsdl? –
Plik wsdl można analizować za pomocą analizatora składni XML, aby uzyskać potrzebne informacje. SAX jest bardzo lekki i łatwy do opanowania. Zobacz http://stackoverflow.com/questions/2134507/fast-lightweight-xml-parser – Pedantic
Wygląda na to, że szukasz biblioteki, która może załatwić sprawę. SOAPUI ma kilka bibliotek, które można ponownie wykorzystać. Nie pamiętam nazw słoików/klas, ale udało mi się to z powodzeniem 1 rok temu. – Abhilash