自己是不是与此代码点击我:无法找到名为元素
var cfgDoc = XElement.Load(_cfgFile);
foreach (var x in cfgDoc.Elements("property"))
{
Console.WriteLine(x);
}
我期待着能够输出只有名为property
节点,但得到小人物。如果我离开XName参数,我得到文档(下面),它至少表明它正在正确加载。
我错过了什么?
<session-factory xmlns="urn:nhibernate-configuration-2.2">
<property name="connection.release_mode">on_close</property>
<property name="show_sql">true</property>
</session-factory>
第二个尝试
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);
}
我想提出这个建议,所以我会解释为什么这些会有所作为。当您仅执行XElement.Load时,返回的变量表示根节点,它与根元素不同。在你的示例文件中,`session-factory`是根元素。根节点是代表整个文档的抽象概念,并被认为是根(`session-factory`)元素的父代。为了从根节点到`property`元素,你必须首先通过`session-factory`。 – Simon 2010-11-29 23:03:02
后裔的作品。 XDoc.Load()。Root不。 – Berryl 2010-11-29 23:16:43