Cambiare NHibernate config con Nant xmlpoke
-
25-09-2019 - |
Domanda
Come posso cambiare la stringa di connessione da file nhibernate.config utilizzando Nant
il problema è che tutti gli esempi sono di cambiare il valore di attributo, ma ha NHibernate testo 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>
....
Ho bisogno di proprietà cambiamento connection.connection_string
<xmlpoke file="${nhibernate.file}"
xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
value="${connection.string}">
</xmlpoke>
questo non funziona in questo caso.
Grazie
Soluzione
Il XPath di esempio si utilizza si riferisce a elementi di nome add
con gli attributi chiamati key
. Nel tuo caso siete alla ricerca di elementi property
con attributi chiamati name
.
Quindi, dal momento che si desidera modificare il testo interno e non l'attributo @value
sull'elemento property
si dovrebbe rimuovere il riferimento all'attributo finale.
E infine, dal momento che il codice XML NHibernate ha uno specifico spazio dei nomi si dovrà informare xmlpoke di utilizzare lo spazio dei nomi corretto.
Quindi, il compito dovrebbe essere simile a questo:
<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: Non ho testato questo fuori, ma le regole xml generale / XPath sono in lavoro qui quindi spero che funziona. Inoltre, potrebbe essere che c'è un modo per indicare al xmlpoke che il namespace specificato deve essere predefinito e quindi eliminano la necessità di spazio prefissi tutte le varie parti del xpath.
In bocca al lupo!