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

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top