Pergunta

Como posso alterar a string de conexão do arquivo Nibernate.config usando o NANT

O problema é que todos os exemplos são sobre mudança de valor de atributo, mas Nhibernate tem texto interno

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>
    ....

Preciso alterar a Property Connection.Connection_String

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

Isso não funciona neste caso.

Obrigado

Foi útil?

Solução

A amostra XPath que você está usando se refere a elementos nomeados add com atributos chamados key. No seu caso, você está procurando property elementos com atributos chamados name.

Em seguida, já que você deseja mudar o texto interno e não o @value atributo no property Elemento Você deve remover a referência de atributo à direita.

E, finalmente, como o Nibernate XML tem um espaço para nome específico, você terá que informar xmlpoke Para usar o espaço para nome correto.

Portanto, a tarefa deve ficar assim:

<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>

Nota: Eu não testei isso, mas as regras gerais de XML/XPath estão trabalhando aqui, então espero que funcione. Além disso, pode ser que exista uma maneira de indicar ao XMLPOKE que o espaço para nome especificado deve ser o padrão e, assim, eliminar a necessidade de namespace prefixar todas as várias partes do XPath.

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top