6

我有我的web.config文件與此類似結構的自定義欄目:XDT配置變換 - ReplaceAll?

<Messages> 
    <Message id="1'> 
    <Property Name="foo" value="bar" /> 
    </Message> 
    <Message id="2'> 
    <Property Name="foo" value="bar2" /> 
    </Message> 
</Messages> 

我想申請這個這樣一個自定義轉換,我可以更改屬性元素的所有實例的值與名稱=「富」 - 但我似乎無法得到它的工作。

我已經試過:

<Messages> 
    <Message> 
    <Property Name="foo" value="updated" xdt:Locator=Match(Name) xdt:Transform="Replace" /> 
    </Message> 
</Mesasges> 

我可以通過更換變換=替換刪除所有元素的變換= removeall過 - 任何想法如何,我可以實現類似於替換所有的值的東西嗎?

+0

也許告訴我們你嘗試過什麼? –

+0

對不起,XMl格式讓我第一次。現在從文檔更新 –

回答

7

看起來像變換:替換僅替換documentation on msdn...中的第一個匹配元素...如果選擇多個元素,則只替換第一個選定元素。我解決了這個問題,通過使用配對條件和SetAttributes,類似的組合:

<Messages> 
    <Message> 
    <Property value="updated" xdt:Locator=Condition(@Name='foo') xdt:Transform="SetAttributes(value)" /> 
    </Message> 
</Messages> 
+0

以獲得額外的說明:_... SetAttributes變換影響**所有**選定的元素。這與替換變換屬性不同,如果選擇多個元素,則僅影響**第一個選定的元素。 –

+0

提及XPath不足以實現此功能至關重要。轉換中的XML結構*必須反映正在轉換的XML的結構,因此如果將'Property'節點作爲轉換的根部,它將無法工作。而且,更重要的是,它只適用於'SetAttributes','Replace'也不起作用 – SOReader