2013-04-18 67 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();