Einfache Möglichkeit zum Parsen einer WSDL
Ich versuche, eine WSDL zu analysieren, um die Operationen, den Endpunkt und eine Beispielnutzlast zu erhalten. Die WSDL wird vom Benutzer eingegeben. Ich kann dazu kein Tutorial finden.
Ich kann nur solche finden, die Quellcode generieren, den ich nicht benötige. Ich habe versucht, XBeans zu verwenden, aber anscheinend brauche ich Saxon. Gibt es eine einfache, leichte Möglichkeit, dies ohne sächsische Sprache zu tun?
Z.B.
<?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>
Soll Operationen erhalten: GetLastTradePrice, GetLastTradePrice
Endpunkt: StockQuotePort
Beispielnutzlast:
<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>
So macht es SoapUI. Es geht mir aber hauptsächlich darum, die WSDL analysieren zu können. Ein bisschen mehr Kontext ist, dass die WSDL hochgeladen wird und das Ergebnis dann in einer GWT-Anwendung angezeigt wird (der Datei-Upload muss zum Servlet gehen). Also muss ich die Datei analysieren und ein Objekt erstellen, das der GWT verstehen kann.