使用nant xmlpoke更改nhibernate配置

时间:2010-04-09 08:20:27

标签: nhibernate nant xmlpoke

如何使用nant

更改nhibernate.config文件中的连接字符串

问题是所有示例都是关于更改属性值,但是nhibernate有内部文本

eq:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
 <session-factory>
    <property name="connection.connection_string">Data Source.\server;Database=UnitTestDb;UID=user;pwd=pass;</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="show_sql">true</property>
    <property name="connection.release_mode">auto</property>
    <property name="adonet.batch_size">500</property>
    ....

我需要更改属性connection.connection_string

<xmlpoke        file="${nhibernate.file}"
        xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
        value="${connection.string}">
</xmlpoke>

在这种情况下,这不起作用。

由于

1 个答案:

答案 0 :(得分:7)

您使用的示例xpath指的是名为add的元素,其属性名为key。在您的情况下,您正在查找名为property的{​​{1}}元素。

接下来,由于您要更改内部文本而不是name元素上的@value属性,因此应删除尾随属性引用。

最后,由于NHibernate xml具有特定的命名空间,因此您必须通知xmlpoke使用正确的命名空间。

所以任务看起来应该是这样的:

property

注意:我没有对此进行测试,但是一般的xml / xpath规则在这里工作,所以我希望它有效。此外,可能有一种方法可以向xmlpoke指示指定的命名空间应该是默认的,从而消除了对xpath中所有各个部分的名称空间前缀的需要。

祝你好运!