我正在根据环境转换web.config文件中appsettings的值。当存在名称相同但大小写不同的键时,我遇到了一个问题
本地价值
<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LOGINURL" value="xyf" />
Dev值
<add xdt:Transform="RemoveAll" xdt:Locator="Match(key)" key="LoginUrl" value="abcd" />
我想不区分大小写地替换键的值。
TIA
答案 0 :(得分:5)
您可以将XPath与the Condition
locator一起使用,而不要使用Match
。
使用here on building case insensitive matching in XPath所述的技巧,您可以编写以下代码:
<add xdt:Transform="RemoveAll" xdt:Locator= "Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')"/>
key
和value
属性是无用的,因为已删除了元素。
要编辑元素,请使用SetAttributes
保持键不变。
<add xdt:Transform="SetAttributes" xdt:Locator="Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')" value="test.com" />
我测试了所有here。