Cambio nhibernate configuración con Nant xmlpoke
-
25-09-2019 - |
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
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!