2009-02-25 6 views
0

Мы начинаем использовать nhibernate и настроили диспетчер сеансов для создания нового SessionFactory. Мне нужно изменить некоторую информацию в первый раз, когда приложение запустится.Xml Element с пространством имен

Открываем конфигурационный файл (не app.config) с помощью XDocument.

<settings> 
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <reflection-optimizer use="false"/> 
    <session-factory> 
     <property name="x">SomeValue</property> 
    </session-factory> 
    </hibernate-configuration> 
</settings> 

XDocument xdoc = XDocument.Load(<file>); 
var x = xdoc.Root.Element("hibernate-configuration"); 

x имеет значение null, за исключением случаев, когда я удаляю xmlns. Что мне не хватает?

ответ

3

Похоже, вы вызываете элемент по его локальное имя из пустого пространства имен, а не новое пространство имен вы добавили здесь:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 

попробовать это:

xdoc.Root.Element(XName.Get("hibernate-configuration", "urn:nhibernate-configuration-2.2")) 
1

Вам необходимо передать URI пространства имен с помощью XName.Get, иначе вы получите только соответствие для < hibernate-configuration> элементов в пустое пространство имен по умолчанию.

var x = xdoc.Root.Element (
    XName.Get ("hibernate-configuration", "urn:nhibernate-configuration-2.2")); 
Смежные вопросы