从WiX更改XML节点值

问题描述:

我希望能够从WiX更改XML节点值。 XML结构如下所示:从WiX更改XML节点值

<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <setting name="setting1"> 
     <value xsi:type="xsd:boolean">false</value> 
    </setting> 
    <setting name="setting2"> 
     <value xsi:type="xsd:string">hello</value> 
    </setting> 
</settings> 

我想将setting2的字符串值更改为其他值。我试图用XmlConfig和不工作看起来像这样的代码:

<util:XmlConfig Id='SetSetting2' File='[#defaultSettings.xml]' 
       Action='create' Node='value' 
       ElementPath="//settings/setting[\[]@name='setting2'[\]]/value" 
       Name='value' Value="test" 
       On='install' PreserveModifiedDate='yes' 
       VerifyPath="//settings/setting[\[]@name='setting2'[\]]/value/"/> 

但是,这会产生XML看起来像这样:

<setting name="setting2"> 
    <value xsi:type="xsd:string" value="test"></value> 
</setting> 

如何使它看起来像下面?

<setting name="setting2"> 
    <value xsi:type="xsd:string">test</value> 
</setting> 

尝试省略Name属性。就像这样:

<util:XmlConfig Id='SetSetting2' 
       File='[#defaultSettings.xml]' 
       Action='create' 
       Node='value' 
       ElementPath="//settings/setting[\[]@name='setting2'[\]]/@value" 
       Value="test" 
       On='install' 
       PreserveModifiedDate='yes' 
       VerifyPath="//settings/setting[\[]@name='setting2'[\]]/@value/"/> 

XmlConfig Element见。对于属性Name它说:

未设置此属性会导致元素的文本值被设置。否则,这指定了设置的属性名称。

+0

我确定我曾试过这个,但很明显我没有。谢谢,它的工作原理! – 2011-02-18 14:11:21