Axis2 wsdl2Java报错:不支持带混合内容的XSD complexType
解决Axis2 wsdl2Java生成类时“XSD complexType with mix content not supported in ADB”错误
错误原因
Axis2默认的ADB(Apache Data Binding)数据绑定组件不支持包含混合内容(即同时包含文本节点和子元素的complexType)的XSD结构,你使用的Sabre GetReservation WSDL中恰好存在这类复杂类型定义,导致生成失败。
解决方案
方案1:更换数据绑定框架
Axis2支持多种数据绑定,XmlBeans或JAXB对复杂XSD结构的兼容性更好,完全支持混合内容的complexType。执行命令时指定对应的数据绑定参数即可:
使用XmlBeans生成:
axis2/bin/wsdl2java.sh -uri https://files.developer.sabre.com/wsdl/sabreXML1.0.00/TDSServices/GetReservationRQ/GetReservation_1.19.16.wsdl -d xmlbeans使用JAXB生成:
axis2/bin/wsdl2java.sh -uri https://files.developer.sabre.com/wsdl/sabreXML1.0.00/TDSServices/GetReservationRQ/GetReservation_1.19.16.wsdl -d jaxb
方案2:修改WSDL/XSD(不推荐)
如果必须使用ADB,需要手动编辑WSDL引用的XSD文件,移除或重构包含混合内容的complexType。但这种方法风险较高,可能破坏WSDL的规范性,导致后续与Sabre服务交互时出现兼容性问题,因此不建议采用。
内容的提问来源于stack exchange,提问作者Prabhu
相关产品推荐
相关产品推荐

