使用C#从xml读取子元素

问候,使用下面列出的xml文件中的C#通过ID属性从子元素读取所有属性的最佳实践是什么?

谢谢,

      

以下LINQ调用应该可以解决这个问题:

 var attrs = doc.Descendants("Program").First(prog => prog.Attribute("ID").Value == "2").Attributes(); 

Descendants方法为您提供XML文档中名为“Program”的所有元素(任何位置)。 使用First ,您可以获得匹配某个指定谓词的第一个(例如,“ID”等于“2”)。 请注意,如果要在没有此类元素时获取null ,则可以使用FirstOrDefault 。 最后, Attributes为您提供元素的所有Attributes的集合。

我认为如果可以的话,使用LINQ to XML是可取的 – 在使用XML或其他数据源时,您将编写相同的代码,因此读取和编写代码很容易(一旦您学习LINQ)。

有很多方法可以做到这一点,例如LINQ over XML。 但是使用Xpath肯定还没有死:

 class Program { static void Main(string[] args) { XmlDocument doc = new XmlDocument(); string xml = @"... your xml "; doc.LoadXml(xml); // Using SelectNodes with Xpath XmlNodeList list = doc.SelectNodes("WinDLN/Program[@ID='2']"); Console.WriteLine(list.Count); // prints 1 list = doc.SelectNodes("WinDLN/Program[@ID]"); Console.WriteLine(list.Count); // prints 3 (selected all IDs) } } 

您选择的方法通常是品味,选择您最熟悉的API。