在获取元素中某些属性的值时,这个链接到XML查询中出现了一些问题

本文关键字:查询 XML 链接 问题 元素 获取 属性 | 更新日期: 2023-09-27 18:09:59

我有这个app.config文件:

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
  <appSettings>
    <add key="domain" value="localhost"/>
    <add key="hostname" value="hostpc"/>
 </appSettings>
 </configuration>

我使用这个LINQ到XML查询来获取键名为"域"的值。例如,当我说我想获得键名为"域"的值,它应该给我"localhost":

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

但是我的查询缺少一些东西,任何人都可以确定我缺少什么或如何才能做得更好,它目前不起作用。

注意:我只想使用linq到xml

在获取元素中某些属性的值时,这个链接到XML查询中出现了一些问题

我使用你的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();
    }
}

输出为:localhost

希望这对你有帮助。如果它不能在您的机器上工作,请共享错误详细信息。

试试这个:

    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();