2010-03-22 45 views
7

我需要WSDL的解析器來獲取消息,portTypes,操作,綁定,服務......我希望一些解析器已經存在。那麼,任何指導方針?如何解析Java中的WSDL?

回答

0

有幾個Web服務棧可用。

看看地鐵堆棧。開源和可直接在Java中6

+0

我必須根據WSDL製作動態服務調用器。一些方向如何與Metro做到這一點? – Milan 2010-03-22 21:33:35

+0

那麼我需要根據WSDL製作動態表單(服務調用者)。想象一下,你收到WSDL,你應該從它生成表單(輸入字段),也可以調用該操作。我只是WSDL的存儲庫。它應該是動態的,它可以適用於任何WSDL。我希望我清楚地笑到。 – Milan 2010-03-22 22:57:51

+0

難道你不是問同樣的問題,因爲http://stackoverflow.com/questions/2491598/create-on-the-fly-web-service-dynamic-web-service-invoker? – nzpcmad 2010-03-23 01:27:50

-1

使用http://sourceforge.net/projects/wsdl4j/

public Definition readWSDLFile(String location) throws WSDLException { 
    WSDLReader reader = getWsdlFactoryInstance().newWSDLReader(); 
    reader.setFeature("javax.wsdl.importDocuments", true); 
    return reader.readWSDL(location); 
} 
3

希望這個鏈接將是有益的,你選擇一個WSDL解析器,Parse WSDL Effectively(看看這個鏈接的歸檔:Web Archive)。

我試過使用Apache Woden,WSDL4JMembrane SOA。 Apache Woden或膜SOA將會很好。

+1

「解析WSDL有效」鏈接現已停止。 Apache Woden僅支持WSDL 2.0,而不支持WSDL 1.1。 – 2013-04-23 14:33:00

0
f wsdl = ''' 
<definitions name="AgencyManagementService" 
    xmlns:ns1="http://www.example.org/NS1" 
    xmlns:ns2="http://www.example.org/NS2"> 
    <ns1:message name="SomeRequest"> 
     <ns1:part name="parameters" element="SomeReq" /> 
    </ns1:message> 
    <ns2:message name="SomeRequest"> 
     <ns2:part name="parameters" element="SomeReq" /> 
    </ns2:message> 
</definitions> 
''' 

def xml = new XmlSlurper().parseText(wsdl).declareNamespace(ns1: 'http://www.example.org/NS1', ns2: 'http://www.example.org/NS2') 
println xml.'ns1:message'.'ns1:part'.size() 
println xml.'ns2:message'.'ns2:part'.size() 

希望這會有所幫助。 Groovy類可以從任何其他Java類中調用。將所有XML工作移至Groovy :)