0

私はこのデータを持っています(すべての要素はオプションです):

<data>
<optionalElement1>...</optionalElement1>
<optionalElement2>...</optionalElement2>
<optionalElement3>...</optionalElement3>
</data>

これを別のスキーマにマップする必要があります (すべての要素が必要です)。

<request> 
<Element1>...</Element1>
<Element2>...</Element2>
<Element3>...</Element3>
</request>

元のリクエストの要素はオプションであるため、マッピングは最初に含まれていた要素に対応する要素のみを生成します。ただし、リクエストの検証は失敗します。

例:

<data>
<optionalElement3>
<value1>1</value1>
<value2>2</value2>
</optionalElement3>
</data>

にマッピングされます

<request>
<Element3>
<subelement1>1</subelement1>
<subelement2>2</subelement2>
</Element3>
</request>

Element1とElement2がないため、検証は失敗します。応答は(私が思うに)次のようになります。

<request>
<Element1 xsi:nil="true" />
<Element2 xsi:nil="true" />
<Element3>
<subelement1>1</subelement1>
<subelement2>2<subelement2>
</Element3>
</request>

マッピングでこれを行うにはどうすればよいですか? 出力メッセージで要素が確実に作成されるようにするにはどうすればよいですか?

ところで、サブ要素が存在しない場合 (「data/optionalElement1/value1」としましょう)、宛先サブ要素「request/Element1/subelement1」が作成されていることを確認するにはどうすればよいですか?

4

3 に答える 3

1

非常にシンプルにします。マッピングには xlst ファイルを使用します。

単純な if 条件を使用して、opion 要素の値が存在するかどうかを確認できます。値が存在する場合はそれをマップし、それ以外の場合は null (空) 値をマップします。したがって、オプションの要素に値がなくても、複合要素が生成されます。

それがあなたの問題を解決することを願っています。

于 2010-10-04T22:46:04.623 に答える