2013-04-18 62 views
0

我有這個app.config文件得到特定屬性的值:一些問題在此的LINQ to XML查詢,而在元素

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 

    <add key="domain" value="localhost"/> 

    <add key="hostname" value="hostpc"/> 

</appSettings> 
</configuration> 

我使用這個LINQ到XML查詢來獲取鍵的值命名爲「域」。舉例來說,當我說我想名爲key的值「域」應該給我「本地主機」:

var domain = (from appNode in xmlElement.Elements("add") 
        where appNode.Attribute("key").Value == "domain" 
        select appNode.Attribute("value")); 

但我的查詢缺少的東西任何人都可以找出我缺少什麼,或者它如何能做得更好,目前不起作用。

注:我只希望使用LINQ爲xml

回答

0

我用,因爲它是你的app.config文件的內容,寫有如下一個小控制檯應用基礎代碼:

class Program 
{ 
    static void Main(string[] args) 
    { 
     // Create the query 
     var nodes = from appNode in XElement.Load("App.config").Descendants("appSettings").Elements() 
        where appNode.Attribute("key").Value == "domain" 
        select appNode; 

     var element = nodes.FirstOrDefault(); 
     string value = element.Attribute("value").Value; 

     Console.WriteLine(value); 

     //Pause the application 
     Console.ReadLine(); 
    } 
} 

輸出是:本地主機

希望這有助於。如果您的機器無法正常工作,請分享錯誤詳情。

+0

不,不起作用錯誤與我的相同 – nzdev 2013-04-18 04:54:50

+0

你得到的錯誤是什麼? – SBirthare 2013-04-18 05:05:33

+0

我調試和由該域返回的值是\t \t \t域{System.Linq.Enumerable.WhereEnumerableIterator } \t System.Collections.Generic.IEnumerable {System.Linq.Enumerable.WhereEnumerableIterator } – nzdev 2013-04-18 05:07:31

0

嘗試使用這一個:

XElement doc = XElement.Load("ConsoleApplication1.exe.config"); 

    var domain = (from appNode in doc.Element("appSettings").Elements("add") 
        where appNode.Attribute("key").Value == "domain" 
        select appNode.Attribute("value").Value).FirstOrDefault();