首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nant xmlpoke更改nhibernate配置

使用nant xmlpoke更改nhibernate配置
EN

Stack Overflow用户
提问于 2010-04-09 16:20:27
回答 1查看 1.7K关注 0票数 2

如何使用nant更改nhibernate.config文件中的连接字符串

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

eq:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<xmlpoke        file="${nhibernate.file}"
        xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
        value="${connection.string}">
</xmlpoke>

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-09 16:40:06

您正在使用的样例xpath引用了具有key属性的add元素。在本例中,您正在寻找具有名为name的属性的property元素。

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

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

因此,任务应该如下所示:

代码语言:javascript
复制
<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中为所有不同部分加上名称空间前缀的需要。

祝好运!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2605933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档