6

サードパーティの Web サービスを使用します。新しい要素を追加するなど、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

ダニエルの答えは役立つはずですが、Axis2 から得られる出力は Axis から得られるものとは大きく異なることに注意してください。そのため、おそらく統合を多少書き直す必要があります。また、彼が提供したリンクは Axis2 のサブセット用です。

それが機能するにはシバン全体が必要になります。これを書いている時点では、このリリースが 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 テクノロジースタックに慣れていないのであれば、それを避け、代わりにスキーマ構造が変化する可能性のある Web サービスに対応できる動的 WSDL to Java フレームワークと統合することをお勧めします。

于 2015-08-28T20:59:30.123 に答える