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