arc:map

Version 23.4.8843


arc:map

Version 23.4.8843


arc:map 关键字用来将对象中的属性映射到另一个对象的属性。从一个对象中读取属性,并使用在 map 字符串中指定的新名称写到另一个对象中。arc:map 关键字不会清除目标对象,仅仅是增加了新属性。或者,如果在目标对象中已存在相同的属性名,则对应的属性值将被覆盖,其它属性则保持原样。

参数

  • to:要将属性写入的对象的名称。
  • from:要从中读取属性的对象的名称。
  • map:属性名称的列表,指定了目标对象中的属性名称,然后是源对象中的属性名称。例如:可以使用下面的语法,将带有一个前缀的属性映射到带有另一个前缀的属性:

    customer:\* = soap:\*

    任何不是有效属性名称的字符都将被忽略,并用于划分名称的结尾。

控制属性

  • 此关键字没有任何控制属性。

示例

映射三个属性:map 是一系列 “to” 属性名,后跟 “from” 属性名。

<arc:set item="item1" attr="var1" value="x"/>
<arc:set item="item1" attr="var2" value="y"/>
<arc:set item="item2" attr="attr1" value="z"/>
<arc:map to="item2" from="item1" map="attr1=var1, attr2=var2"/>

在本例中,item1 的 var1 和 var2 属性分别被映射到 item2 的 attr1 和 attr2。attr1 属性,在 item2 中值被设为 z,被 item1 中 var1 的值 x 覆盖。attr2 属性,在 item2 中不存在,被创建且值被设为 y,即在 item1 中 var2 的值。

可以将多个属性从具有一个前缀的对象映射到具有不同前缀的对象。这对于将前缀从应用程序前缀(例如 soap:*)更改为业务域前缀(例如 customer:*)时会很有用。下面的示例创建一个从对象 soapout 中所有 soap:* 属性到对象 customer 中以 customer:* 为前缀的属性映射:

<arc:map from="soapout" to="customer" map="customer:* = soap:*"/>

将一个项目的所有属性复制到另一个对象:

<arc:map from="copyfrom" to="copyto" map="* = *"/>

另请参阅

  • arc:set:设置对象的属性。