如何从WSDL文件中获取复杂类型?

问题描述:

我有以下的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

如何以编程方式获取复杂类型?我在哪里可以找到一个关于如何做的例子?

尝试做:

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