【问题标题】:Change XML node values from WiX从 WiX 更改 XML 节点值
【发布时间】:2011-02-18 13:49:54
【问题描述】:

我希望能够从 WiX 更改 XML 节点值。 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>

【问题讨论】:

    标签: xml wix


    【解决方案1】:

    尝试省略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 它说:

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

    【讨论】:

    • 我确信我已经尝试过了,但显然我没有。谢谢,它有效!
    • @value 应该只是 value
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2021-08-29
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多