如果使用datamapper评估以下XML,只将偶数编号的id映射到输出,那么使用xpath(Rule)的条件是:?
<employees>
<employee>
<id>1</id>
<name>aaa</name>
</employee>
<employee>
<id>2</id>
<name>bbb</name>
</employee>
<employee>
<id>3</id>
<name>ccc</name>
</employee>
<employee>
<id>4</id>
<name>ddd</name>
</employee>
</employees>
我尝试使用 / employee [id mod 2 = 0] / id 。如果输入只有一个偶数,则映射;如果input.xml中有多个偶数编号的id,则会失败。 错误是
xpath填充字段的结果&#39; id&#39;包含两个或更多值!
答案 0 :(得分:1)
规则独立于DM中配置的每个元素映射。将在要使用的元素映射配置中创建规则。
对于提供的示例xml,应在Foreach 'employee' -> 'employee'
元素映射中创建此规则。
尝试使用此规则配置
Name : {Rule Name}
Type : Boolean
Context : /employees/employee
Xpath : /matches(string(id mod 2), '0')
如果id为偶数,则会创建一个返回true的规则,如果id为odd,则返回false。
在DM脚本视图中使用if块并检查规则的值。如果规则值为true,则只映射id。
答案 1 :(得分:0)
It also worked in this way
Name : {Rule Name}
Type : String
Context : /employees/employee
Xpath : /id mod 2 = 0
and used the if condition as below :
if(input.Ruleid.equals("true")){
output.id = input.id;
output.name = input.name;
}
如果不使用if条件,还有其他方法吗?