Estoy tratando de analizar un WSDL para obtener las operaciones, punto final y una carga de ejemplo. El WSDL ingresado por el usuario. No puedo encontrar un tutorial para hacer esto.Forma simple de analizar un WSDL
Solo puedo encontrar los que generan código fuente que no necesito. He intentado usar XBeans, pero aparentemente necesito Saxon. ¿Hay una forma simple y ligera de hacerlo sin Saxon?
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>
debe recibir operaciones: GetLastTradePrice, GetLastTradePrice
Punto final: StockQuotePort
Carga de la muestra:
<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>
Esto es como lo que hace SoapUI. Pero lo que más me preocupa es poder analizar el WSDL. Un poco más de contexto es que el WSDL se carga y luego el resultado se muestra en una aplicación GWT (la carga del archivo debe ir al servlet). Entonces, necesito analizar el archivo y crear un objeto que GWT pueda entender.
¿Tiene un ejemplo wsdl? –
El wsdl se puede analizar usando un analizador XML para obtener lo que necesita de él. SAX es muy liviano y muy fácil de aprender. Ver http://stackoverflow.com/questions/2134507/fast-lightweight-xml-parser – Pedantic
Parece que está buscando una biblioteca que puede hacer el truco. SOAPUI tiene algunas bibliotecas que puedes reutilizar. No recuerdo los nombres de jar/class, pero lo hice con éxito hace 1 año. – Abhilash