我有这些数据(所有元素都是可选的):
<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”?