Tôi đang cố gắng phân tích cú pháp WSDL để nhận các thao tác, điểm cuối và tải trọng ví dụ. WSDL được người dùng nhập vào. Tôi không thể tìm thấy một hướng dẫn để làm điều này.Cách đơn giản để phân tích cú pháp WSDL
Tôi chỉ có thể tìm thấy những người tạo mã nguồn mà tôi không cần. Tôi đã thử sử dụng XBeans nhưng dường như tôi cần Saxon. Có một cách nhẹ đơn giản để làm điều này mà không có Saxon?
Ví dụ:
<?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>
có nên hoạt động: GetLastTradePrice, GetLastTradePrice
Endpoint: StockQuotePort
mẫu Payload:
<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>
này cũng giống như những gì soapUI làm. Nhưng tôi chủ yếu quan tâm đến việc có thể phân tích WSDL. Ngữ cảnh nhiều hơn một chút là WSDL được tải lên và sau đó kết quả được hiển thị trong một ứng dụng GWT (tệp tải lên phải đi tới servlet). Vì vậy, tôi cần phải phân tích cú pháp tệp và tạo một đối tượng mà GWT sẽ có thể hiểu được.
Bạn có ví dụ về wsdl? –
Wsdl có thể được phân tích bằng cách sử dụng một trình phân tích cú pháp XML để có được những gì bạn cần. SAX rất nhẹ và rất dễ học. Xem http://stackoverflow.com/questions/2134507/fast-lightweight-xml-parser – Pedantic
Có vẻ như bạn đang tìm kiếm thư viện có thể thực hiện thủ thuật. SOAPUI có một số thư viện mà bạn có thể sử dụng lại. Tôi không nhớ tên jar/class nhưng tôi đã làm nó thành công 1 năm trước. – Abhilash