我们使用第三方的网络服务。每当他们更新XML模式(如添加新元素)时,我们都会收到以下错误消息。
“SAXException:无效的元素......”
AXIS中是否有任何方法可以在解析时跳过XML上收到的其他元素?
我之前使用AXIS生成了Web服务客户端,用于接收XML,如下所示
<Flight>
<AirlineCode>AB</AirlineCode>
</Flight>
一切都很好。但现在我得到一个额外的标签作为回应。
<Flight>
<AirlineCode>AB</AirlineCode>
<OtherCode>XX</OtherCode>
</Flight>
为此我得到“无效元素”例外。
由于
答案 0 :(得分:3)
Apache Axis2版本1.7.0-SNAPSHOT可以通过-Eiu
开关进行编译ignore unexpected elements。
答案 1 :(得分:0)
Daniel的答案应该有所帮助,但请注意,从Axis2获得的输出与您从Axis获得的输出非常不同,因此您可能需要稍微重写一下您的集成。此外,他提供的链接是Axis2的子集。
你需要整个shebang才能工作,而且可以在这里使用,因为在撰写本文时,我找不到在任何maven存储库上管理的这个版本: https://repository.apache.org/content/groups/snapshots/org/apache/axis2/axis2/1.7.0-SNAPSHOT/
因为这个版本现在没有在maven中管理,所以找出依赖关系是一个很大的痛苦。这是我使用的gradle依赖项的快照:
compile 'org.apache.ws.commons.schema:XmlSchema:1.4.7'
compile 'org.apache.ws.commons.axiom:axiom-api:1.2.15'
compile 'org.apache.neethi:neethi:3.0.1'
compile 'axis:axis-wsdl4j:1.6.3'
compile 'commons-logging:commons-logging:1.1.1'
compile files('C:\\temp\\wsdl\\axis2-1.7.0-SNAPSHOT.jar', 'C:\\temp\\wsdl\\axiom.jar')
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
公理依赖是我必须手动下载的,因为尝试使用存储库托管版本不能用于我不清楚的原因。
除此之外,如果您没有与Axis技术堆栈结合,我建议避免使用它,而是将动态WSDL与Java框架集成,以适应可能更改Schema结构的WebServices。