自己是不是與此代碼點擊我:無法找到名爲元素
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