> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc:map

> 使用 arc:map 将一个对象中的属性映射到另一个对象中的属性，从源对象读取并以新名称写入目标对象。

export const siteNameShort = "知行之桥";

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

## 参数

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

  `customer:\* = soap:\*`

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

## 控制属性

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

## 示例

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

```xml theme={null}
<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:\* 为前缀的属性映射：

```xml theme={null}
<arc:map from="soapout" to="customer" map="customer:* = soap:*"/>
```

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

```xml theme={null}
<arc:map from="copyfrom" to="copyto" map="* = *"/>
```

## 另请参阅

* [arc:set](./op-arc-set)：设置对象的属性。
