Изменить конфигурацию Nhibernate с NANT XMLPOOKE
-
25-09-2019 - |
Вопрос
Как я могу изменить строку подключения из файла 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.
Удачи!