不区分大小写的匹配定位器配置转换



我正在根据环境转换web.config文件中appsettings的值。当有相同名称但大小写不同的键时,我遇到了一个问题,示例如下

本地值

<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LOGINURL" value="xyf" />

开发价值

<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LoginUrl" value="abcd" />

我想不区分大小写地替换键的值。

蒂亚

您可以将 XPath 与 Condition 定位器一起使用,而不是 Match 。使用这里描述的关于在 XPath 中构建不区分大小写匹配的技巧,您可以编写以下内容:

<add xdt:Transform="RemoveAll" xdt:Locator= "Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')"/>

keyvalue 属性是无用的,因为元素已被移除。

要编辑元素,请使用 SetAttributes 来保持键不变。

<add xdt:Transform="SetAttributes" xdt:Locator="Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')" value="test.com" />

我在这里测试了所有这些。