Ändern nhibernate Config mit Nant xmlpoke
-
25-09-2019 - |
Frage
Wie kann ich die Verbindungszeichenfolge aus nhibernate.config Datei mit Nant ändern
Das Problem ist, dass alle Beispiele sind etwa Attributwert zu ändern, aber nhibernate hat inneren Text
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>
....
Ich muss Änderungseigenschaft connection.connection_string
<xmlpoke file="${nhibernate.file}"
xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
value="${connection.string}">
</xmlpoke>
Das funktioniert nicht in diesem Fall.
Danke
Lösung
Die Probe XPath Sie verwenden bezieht sich auf Elemente namens add
mit Attributen genannt key
. In Ihrem Fall Sie suchen property
Elemente mit Attributen genannt name
.
Als nächstes, da Sie den Text ändern mögen, und nicht das @value
Attribut auf dem property
Elemente sollten Sie die hintere Attribut Referenz entfernen.
Und schließlich, da die NHibernate xml einen bestimmten Namespace werden Sie informieren haben xmlpoke den richtigen Namensraum zu verwenden.
So ist die Aufgabe sollte wie folgt aussehen:
<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>
Hinweis: Ich habe diese aus nicht getestet, aber allgemeiner xml / XPath-Regeln sind hier in Arbeit, damit ich es funktioniert hoffen. Auch könnte es sein, dass es einen Weg gibt, um xmlpoke um anzuzeigen, dass der angegebene Namespace der Standard sein sollte und damit die Notwendigkeit zu beseitigen Namespacepräfix alle die verschiedenen Teile in der XPath.
Viel Glück!