gpt4 book ai didi

wix - 在 Wix 3 中使用 XMLFile 时如何设置 xmlns 属性

转载 作者:行者123 更新时间:2023-12-04 21:39:03 24 4
gpt4 key购买 nike

我在安装过程中使用 XmlFile 元素向 XML 文件添加元素:

<util:XmlFile Id="SetOracleDialectProperty"
Action="createElement"
ElementPath="//hibernate-configuration/session-factory"
Name="property"
Sequence="9"
File="[INSTALLLOCATION]Config\hibernate.config"
Value="NHibernate.Dialect.Oracle10gDialect"/>

我正在写入的空文件如下所示:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
</session-factory>
</hibernate-configuration>

运行安装程序后,我最终得到了这个:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property xmlns="">NHibernate.Dialect.Oracle10gDialect</property>
</session-factory>
</hibernate-configuration>

问题是空的 xmlns 属性覆盖了文件根节点中指定的 xmlns,因此 nhibernate 无法正确识别属性元素。

如何设置值以匹配根节点或删除 xmlns 属性?

我花了一些时间寻找答案,我发现最接近的是“做你会在 MSXML 中做的事情”这对我没有帮助,因为它没有说明如何在 WiX 中做(例如 XmlFile 上的什么属性使用)。

编辑
稍微解释一下 Rob 的回答,在一个我可以使用漂亮格式的地方:
  • 您可以通过在 XmlConfig 元素上设置 Node="document"来添加文档片段。
  • 您必须显式设置命名空间,否则您将再次获得默认命名空间。
  • 此外,虽然您添加了一个“文档”,但如果您指定多个元素,它似乎不起作用。您会收到一个神秘且完全无用的“安装向导过早结束”运行时错误。

  • 所以我的固定代码如下所示:
    <util:XmlConfig Id="MsSqlDialect"
    Action="create"
    ElementPath="//hibernate-configuration/session-factory"
    File="[INSTALLLOCATION]Config\hibernate.config"
    Node="document">
    <![CDATA[
    <property xmlns="urn:nhibernate-configuration-2.2" name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
    ]]>
    </util:XmlConfig>

    最佳答案

    我知道这是多年以后,但如果其他人遇到这个,我认为真正的解决方案是这样的:

    <util:XmlFile Id="SetOracleDialectProperty"
    Action="createElement"
    ElementPath="//hibernate-configuration/session-factory"
    Name="urn:nhibernate-configuration-2.2:property"
    Sequence="9"
    File="[INSTALLLOCATION]Config\hibernate.config"
    Value="NHibernate.Dialect.Oracle10gDialect"/>

    变化来自 Name="property"Name="urn:nhibernate-configuration-2.2:property" - 当配置被写入时,它看起来就像它会识别它是默认命名空间一样。我在调整 list 文件时遇到了同样的问题,这种方法对其进行了排序。

    关于wix - 在 Wix 3 中使用 XMLFile 时如何设置 xmlns 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337628/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com