Changer config NHibernate avec Nant xmlpoke
-
25-09-2019 - |
Question
Comment puis-je changer la chaîne de connexion à partir du fichier nhibernate.config en utilisant Nant
le problème est que tous les exemples de changer la valeur d'attribut, mais NHibernate a le texte intérieur
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>
....
Je dois changer la propriété connection.connection_string
<xmlpoke file="${nhibernate.file}"
xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
value="${connection.string}">
</xmlpoke>
cela ne fonctionne pas dans ce cas.
Merci
La solution
L'échantillon XPath que vous utilisez fait référence à des éléments nommés add
avec des attributs appelés key
. Dans votre cas, vous êtes à la recherche d'éléments de property
avec des attributs appelés name
.
Ensuite, puisque vous voulez changer le texte intérieur et non l'attribut @value
sur l'élément de property
vous devez supprimer la référence attribut de fuite.
Et enfin, puisque le xml NHibernate a un espace de noms spécifique, vous devrez informer xmlpoke à utiliser l'espace de noms correct.
La tâche devrait ressembler à ceci:
<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>
Note: Je ne l'ai pas testé ceci, mais les règles xml général / XPath sont dans le travail ici, donc j'espère que ça marchera. , Il pourrait aussi être qu'il ya un moyen d'indiquer à xmlpoke que l'espace de noms spécifié doit être la valeur par défaut et d'éliminer ainsi le besoin de préfixe namespace toutes les différentes parties du XPath.
Bonne chance!