首页 > 解决方案 > 不区分大小写的匹配定位器配置转换

问题描述

我正在根据环境转换 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" />

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

TIA

标签: c#web-configweb.config-transform

解决方案


您可以将XPath定位器一起使用Condition而不是Match. 并使用此处描述的关于在 XPath 中构建不区分大小写的匹配的技巧,您可以编写以下代码:

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

keyand属性是无用的value,因为元素已被删除。

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

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

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


推荐阅读