Apache AXIS在解析时忽略/跳过其他元素

时间:2012-09-26 08:27:07

标签: java apache axis2 axis

我们使用第三方的网络服务。每当他们更新XML模式(如添加新元素)时,我们都会收到以下错误消息。

“SAXException:无效的元素......”

AXIS中是否有任何方法可以在解析时跳过XML上收到的其他元素?

我之前使用AXIS生成了Web服务客户端,用于接收XML,如下所示

<Flight>
   <AirlineCode>AB</AirlineCode> 
</Flight>

一切都很好。但现在我得到一个额外的标签作为回应。

<Flight>
   <AirlineCode>AB</AirlineCode> 
   <OtherCode>XX</OtherCode> 
</Flight>

为此我得到“无效元素”例外。

由于

2 个答案:

答案 0 :(得分:3)

Apache Axis2版本1.7.0-SNAPSHOT可以通过-Eiu开关进行编译ignore unexpected elements

Downloads for 1.7.0-SNAPSHOT

答案 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。