使用XDocument遍历节点的所有属性

我有以下存储表定义的xml。 如何使用XDocument(C#3.5)遍历传递的tablename的每一列(每个表只出现一次)及其属性

例如:如果用户通过CurrencySummary,我想读取每个列及其所有属性,如HeaderDescription,HeaderName等。

              

我试图通过以下方式实现这一目标:(编辑:根据Henk的建议)

 var doc = XDocument.Load("TableDefinations.xml"); var cols = doc.Descendants("CurrencySummary").First(); foreach (var col in cols.Elements()) { foreach (XAttribute at in col.Attributes()) { //do something with the at.Name and at.Value } } 

这是有效的方式还是有什么比这更好的?

这取决于有多少 ,以及它们的位置是否重要。

 var summ = doc.Descendants("CurrencySummary").First(); foreach (var col in summ.Elements()) ... 

编辑 OP不在.Net 4上,所以不使用SelectMany ,如果Single()不是.Net 4.0替换为First()

看起来你应该只有一个"CurrencySummary"所以……

 var doc = XDocument.Load("TableDefinations.xml"); foreach(XElement col in doc.Descendants("CurrencySummary").Single().Elements()) { foreach(XAttribute at in col.Attributes()) { at... } } 

将迭代遍历TableDefninations.xml中任何位置的唯一CurrencySummary元素中所有元素的所有属性。