6

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

“SAXException:无效元素...”

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

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

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

一切正常。但现在我得到了一个额外的标签作为回应。

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

为此,我得到了“无效元素”异常。

谢谢

4

2 回答 2

3

Apache Axis2 版本 1.7.0-SNAPSHOT 能够通过使用开关进行编译来忽略意外元素。-Eiu

1.7.0-SNAPSHOT 的下载

于 2013-12-02T17:28:50.480 回答
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。

于 2015-08-28T20:59:30.123 回答