0

換句話說,在下面的web.config xml中,我想刪除所有具有以'Elmah'開頭的類型屬性的元素。如何使用XML-Document-Transform從web.config中刪除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。

回答

1

您是否嘗試過單獨移除每個模塊?

<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"/> 
+0

我試圖避免這一點,理論上不總是知道具體哪些我需要刪除。 – ProfK

3

XPath定位器需要一個完全限定的XPath位置,因此您的轉換當前不與任何元素匹配。如果使用條件定位器(它需要一個相對的XPath)相反,它應該符合:

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

還要注意XDT:轉換刪除將僅在第一個匹配元素上運行,所以你需要的removeAll使用實現你想要的。

msdn上的summary涵蓋了這一點。