C# 如何使用XDocument获取属性名和元素值

C# 如何使用XDocument获取属性名和元素值,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我目前正在开发ASP.NET Web窗体应用程序和.NET 4.0。我以前没有在.NET中使用XML的经验。我创建了这个非常简单的XML文档,我想从中提取属性及其各自的数据: <?xml version="1.0" encoding="utf-8" ?> <configuration> <DataTable> <Filter>true</Filter> <DropDown>true</DropDow

我目前正在开发ASP.NET Web窗体应用程序和.NET 4.0。我以前没有在.NET中使用XML的经验。我创建了这个非常简单的XML文档,我想从中提取属性及其各自的数据:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <DataTable>
    <Filter>true</Filter>
    <DropDown>true</DropDown>
  </DataTable>  
</configuration>

符合事实的
符合事实的
我尝试以下代码:

var path = HttpContext.Current.Server.MapPath("/XML/Settings.xml");
XDocument xdoc = XDocument.Load(path);

IEnumerable<XElement> xnodes = xdoc.Root.Elements("DataTable");

List<string> list = new List<string>();

foreach (XElement xnn in xnodes)
{
   list.Add(xnn.Value);
}
var path=HttpContext.Current.Server.MapPath(“/XML/Settings.XML”);
XDocument xdoc=XDocument.Load(路径);
IEnumerable xnodes=xdoc.Root.Elements(“数据表”);
列表=新列表();
foreach(xnodes中的XElement xnn)
{
列表.添加(xnn.值);
}

这将导致我的
列表中有一个元素的值为
truetrue
。我知道这里我不想同时获取属性名和其中的内容,但一般来说这就是我想要做的,所以我如何才能实现它?

您是否尝试过使用
XmlConvert.ToBoolean()
函数


另外,在处理XML文件时,我更愿意使用Linq语法。

这里没有属性。我认为您需要一个字典,其中键是元素名,值是元素值


您可以将所有元素作为字典获取

 var dictionary = xdoc.Descendants().
     ToDictionary(x => x.Name.LocalName, x => x.Value)


我还不熟悉LINQ2XML。现在我只想让它工作,然后我可能会尝试用LINQ实现它。你能解释一下在哪里使用这个
XmlConvert
func吗?我想你可以这样做:
list.Add(XmlConvert.ToBoolean(xnn.Value))我没有亲自测试,但这可能是找到解决方案的第一步。嗯,事实上,我想要一个
字典,它看起来像:
key=Filter,value=true;key=下拉列表,value=true
。到目前为止,我得到的并尝试您的建议也是
key=DataTable,value=truetrue
@Leron add.Elements()在.Elements之后(“DataTable”),就是这样。谢谢。
 var dictionary = xdoc.Descendants().
     ToDictionary(x => x.Name.LocalName, x => x.Value)