Pregunta

¿Cómo puedo cambiar la cadena de conexión del archivo nhibernate.config usando Nant

el problema es que todos los ejemplos son sobre el cambio de valor de atributo, pero nhibernate tiene 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>
    ....

Necesito propiedad cambio connection.connection_string

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

esto no funciona en este caso.

Gracias

¿Fue útil?

Solución

El XPath de ejemplo que utiliza se refiere a elementos nombrados add con atributos llamados key. En su caso que busca elementos property con atributos llamados name.

A continuación, ya que desea cambiar el texto interior y no el atributo @value en el elemento property se debe eliminar la referencia atributo final.

Y, por último, ya que el XML NHibernate tiene un espacio de nombres específico que tendrá que informar a xmlpoke utilizar el espacio de nombres correcta.

Así que la tarea debe tener este aspecto:

<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: no he probado esto, pero las reglas generales xml / XPath están en el trabajo aquí, así que espero que funcione. Además, podría ser que hay una manera de indicar a xmlpoke que el espacio de nombres especificado debe ser el valor por defecto y así eliminar la necesidad de espacio de nombres de prefijo todas las diversas partes de la XPath.

Buena suerte!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top