c# - 不区分大小写的匹配定位器配置转换
问题描述
我正在根据环境转换 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
解决方案
您可以将XPath与定位器一起使用,Condition
而不是Match
. 并使用此处描述的关于在 XPath 中构建不区分大小写的匹配的技巧,您可以编写以下代码:
<add xdt:Transform="RemoveAll" xdt:Locator= "Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')"/>
key
and属性是无用的value
,因为元素已被删除。
要编辑元素,请使用SetAttributes
保持键不变。
<add xdt:Transform="SetAttributes" xdt:Locator="Condition(translate(@key,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='loginurl')" value="test.com" />
我在这里测试了所有这些。
推荐阅读
- java - URLClassLoader 没有加载 jar 文件
- javascript - Angular ngIf 可观察到的异步响应
- caching - 如何避免 Bazel 构建上的“没有空间”?
- wix - 安装期间运行 Wix 捆绑包安装程序失败
- python - Pyspark Dataframes:创建要在 python 中的聚类中使用的特征列
- unit-testing - 如何测试使用了一些经过充分测试但复杂的功能的功能?
- angular - Angular Universal 中的完全服务器端渲染
- three.js - 动画线框线
- sql - 将制表符分隔的文本文件加载到空白表中的 Derby SQL 命令是什么?
- image - 根据关联值将图像补丁保存到多个文件夹中