2010-08-11 86 views
3

我有以下的WSDL文件:如何從WSDL文件中獲取複雜類型?

<wsdl:types> 
    <schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"> 
    <import namespace="http:..."/> 
    <complexType name="BaseBean"> 
    <sequence/> 
    </complexType> 
    <complexType name="DateBean"> 
    <complexContent> 
    <extension base="impl:BaseBean"> 
     <sequence> 
     <element name="date" nillable="true" type="xsd:dateTime"/> 
     </sequence> 
    </extension> 
    </complexContent> 
    </complexType> 
    </schema> 
</wsdl:types> 

使用WSDL4J,我可以得到wsdl:types節點:

WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); 
Definition definition = reader.readWSDL("file.wsdl"); 
Types types = definition.getTypes(); 

但我無法弄清楚如何獲得typescomplex types

如何以編程方式獲取複雜類型?我在哪裏可以找到一個關於如何做的例子?

回答

0

嘗試做:

Schema schema = null; 
for (Object e : types.getExtensibilityElements()) { 
    if (e instanceof Schema) { 
     schema = (Schema)e; 
     break; 
    } 
} 
if (schema != null) { 
    Element schemaElement = schema.getElement(); 
    // ... 
} 

在這一點上,你真的只得到一個org.w3c.dom.Element實例表示該架構。

+0

之前嘗試過。它會返回一個奇怪的[schema:null]引用。 – 2010-08-11 15:10:12

+0

@Paulo - 但是您是否真的嘗試過使用Element來做任何事情?像,'schemaElement.hasChildNodes()'返回什麼? – kschneid 2010-08-11 15:20:15

+0

'hasChildNodes()'返回'true'。但'schema.getElement()'本身返回一個對象,它的屬性是'elementFormDefault =「qualified」xmlns =「http://www.w3.org/2001/XMLSchema」',但沒辦法獲取複雜的類型。 :/ – 2010-08-11 15:35:03