我将如何使用XML的文档,变换删除的web.config ELMAH模块?(How would I

2019-10-17 04:11发布

换句话说,在下面的web.config中的XML,我想删除与开头type属性的所有元素“ELMAH”。

<httpModules>
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>

我已经尝试了基本的几种组合和结构改造,与各种错误,

<add xdt:Locator="XPath([starts-with(@type,'Elmah.')" xdt:Transform="Remove"/>

前放弃,只是删除整个的HttpModules元素,因为需要对没有的XPath。

Answer 1:

中的XPath定位器需要一个完全合格的XPath位置,让您的转换目前不匹配的任何元素。 如果使用条件定位器(它需要一个相对的XPath)相反,它应该匹配:

<add xdt:Locator="Condition(starts-with(@type,'Elmah.')" xdt:Transform="RemoveAll"/>

还需要注意的是XDT:转换删除将仅在第一个匹配元素上运行,所以你需要使用的removeAll来实现你想要的。

在总结 MSDN上涵盖了这个相当不错。



Answer 2:

您是否尝试逐个拆除每个模块?

<add name="ErrorLog" xdt:Locator="Match(name)" xdt:Transform="Remove"/>
<add name="ErrorMail" xdt:Locator="Match(name)" xdt:Transform="Remove"/>
<add name="ErrorFilter" xdt:Locator="Match(name)" xdt:Transform="Remove"/>


文章来源: How would I remove Elmah modules from web.config using XML-Document-Transform?