如何使用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>这在这种情况下不起作用。
谢谢
发布于 2010-04-09 16:40:06
您正在使用的样例xpath引用了具有key属性的add元素。在本例中,您正在寻找具有名为name的属性的property元素。
接下来,由于您希望更改property元素的内部文本而不是@value属性,因此应该删除尾随属性引用。
最后,由于NHibernate xml具有特定的名称空间,因此您必须通知xmlpoke使用正确的名称空间。
因此,任务应该如下所示:
<xmlpoke file="${nhibernate.file}"
xpath="/nhc:hibernate-configuration/nhc:session-factory/nhc:property[@name='connection.connection_string']"
value="${connection.string}">
<namespaces>
<namespace prefix="nhc" uri="urn:nhibernate-configuration-2.2" />
</namespaces>
</xmlpoke>注意:我还没有测试过这一点,但是通用的xml/xpath规则在这里是有效的,所以我希望它可以工作。另外,有一种方法可以指示xmlpoke指定的名称空间应该是缺省名称空间,从而消除了在xpath中为所有不同部分加上名称空间前缀的需要。
祝好运!
https://stackoverflow.com/questions/2605933
复制相似问题