如何从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();
但我无法弄清楚如何获得types
内complex 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
实例表示该架构。
之前尝试过。它会返回一个奇怪的[schema:null]引用。 – 2010-08-11 15:10:12
@Paulo - 但是您是否真的尝试过使用Element来做任何事情?像,'schemaElement.hasChildNodes()'返回什么? – kschneid 2010-08-11 15:20:15
'hasChildNodes()'返回'true'。但'schema.getElement()'本身返回一个对象,它的属性是'elementFormDefault =“qualified”xmlns =“http://www.w3.org/2001/XMLSchema”',但没办法获取复杂的类型。 :/ – 2010-08-11 15:35:03