2009-02-25 5 views
0

Nous commençons à utiliser nhibernate et avons configuré un gestionnaire de session pour créer une nouvelle SessionFactory. J'ai besoin de modifier certaines informations la première fois que l'application démarre.Xml Elément avec espace de nom

J'ouvre le fichier de configuration (pas app.config) en utilisant un 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 est nul sauf si je supprime les xmlns. Qu'est-ce que je rate?

Répondre

3

On dirait que vous appelez l'élément par son nom local de l'espace de noms null plutôt que le nouvel espace de noms que vous avez ajouté ici:

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

essayez ceci:

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

Vous devez transmettre cet URI d'espace de noms avec XName.Get, sinon vous obtiendrez uniquement une correspondance pour < éléments hibernate-configuration> dans l'espace de noms vide par défaut.

var x = xdoc.Root.Element (
    XName.Get ("hibernate-configuration", "urn:nhibernate-configuration-2.2")); 
Questions connexes