Read child elements using C# from xml

后端 未结 2 688
情话喂你
情话喂你 2020-12-21 08:34

Greeting, What is the best practice to read all attributes from a child elements by ID attributes using C# in xml file listed down.

Thank you,

 

        
相关标签:
2条回答
  • 2020-12-21 09:14

    The following LINQ call should do the trick:

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

    The Descendants method gives you all elements (anywhere) in the XML document that are named "Program". Using First, you can get the first one that matches some specified predicate (e.g. has "ID" equal to "2"). Note that you can use FirstOrDefault if you want to get null when there is no such element. Finally, Attributes gives you a collection of all attribtues of the element.

    I think that using LINQ to XML if you can is preferrable - you'll write the same code when working with XML or other data sources, so reading and writing the code is easy (once you learn LINQ).

    0 讨论(0)
  • 2020-12-21 09:29

    There are many ways to do it, e.g. LINQ over XML. But using Xpath is definitely not dead yet:

    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)
        }
    }
    

    What method you'll choose is most often a matter of taste, select the API you're most comfortable with.

    0 讨论(0)
提交回复
热议问题