Вопрос

Как я могу изменить строку подключения из файла nhibernate.config, используя NANT

Проблема в том, что все примеры приводятся при изменении значения атрибута, но Nibernate имеет внутренний текст

уравнение:

<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>
    ....

Мне нужно изменить соединение свойства .Connection_String

<xmlpoke        file="${nhibernate.file}"
        xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
        value="${connection.string}">
</xmlpoke>

Это не работает в этом случае.

Спасибо

Это было полезно?

Решение

Образец XPath, который вы используете, относится к элементам с именем add с именами атрибутов key. Отказ В вашем случае вы ищете property Элементы с атрибутами называются name.

Далее, поскольку вы хотите изменить внутренний текст, а не @value атрибут на то property Элемент Вы должны удалить ссылку на задний атрибут.

И, наконец, поскольку Nibernate XML имеет определенное пространство имен, вам придется информировать xmlpoke. использовать правильное пространство имен.

Так что задача должна выглядеть так:

<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>

Примечание. Я не проверил это, но общие правила XML / XPath работают здесь, поэтому я надеюсь, что это работает. Кроме того, возможно, что есть способ указать XMLPoke, что указанное пространство имен должно быть значением по умолчанию и, таким образом, устраняет необходимость в префиксе пространства пространства имен всех различных деталей в XPath.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top