Quelque chose ne clique pas pour moi avec ce code:ne peut pas trouver le nom des éléments
var cfgDoc = XElement.Load(_cfgFile);
foreach (var x in cfgDoc.Elements("property"))
{
Console.WriteLine(x);
}
Je comptais être en mesure de sortie seulement des noeuds qui sont nommés property
, mais obtenir zilch. Si je laisse le paramètre XName, j'obtiens le document (ci-dessous), qui montre au moins qu'il est chargé correctement.
Qu'est-ce qui me manque?
<session-factory xmlns="urn:nhibernate-configuration-2.2">
<property name="connection.release_mode">on_close</property>
<property name="show_sql">true</property>
</session-factory>
2ème essai
var cfgDoc = XElement.Load(_cfgFile);
XNamespace ns = "urn:nhibernate-configuration-2.2";
var properties = cfgDoc.Elements(ns + "property");
Assert.That(properties.Count() > 0);
foreach (var x in cfgDoc.Elements(ns + "property"))
{
Console.WriteLine(x);
}
J'allais le suggérer, alors je vais expliquer pourquoi cela ferait une différence. Lorsque vous ne faites que XElement.Load, la variable renvoyée représente le nœud racine, qui est distinct de l'élément racine. Dans votre fichier exemple, 'session-factory' est l'élément racine. Le nœud racine est un concept abstrait représentant l'intégralité du document et est considéré comme le parent de l'élément racine ('session-factory'). Pour passer du noeud racine aux éléments 'property', vous devez d'abord passer par' session-factory'. – Simon
Descendants fonctionne. XDoc.Load(). La racine ne le fait pas. – Berryl
Eh bien, Racine fonctionne aussi, mais seulement avec Descendants aussi loin que je peux voir. Assez proche pour être la réponse à ce que j'ai demandé tho! Salutations – Berryl