DooDoo
DooDoo

Reputation: 13487

How to get specific element Count in XML or XElement variable

Consider this XML:

<Employees>
    <Person>
        <ID>1000</ID>
        <Name>Nima</Name>
        <LName>Agha</LName>
    </Person>
    <Person>
        <ID>1001</ID>
        <Name>Ligha</Name>
        <LName>Ligha</LName>
    </Person>
    <Person>
        <ID>1002</ID>
        <Name>Jigha</Name>
        <LName>Jigha</LName>
    </Person>
    <Person>
        <ID>1003</ID>
        <Name>Aba</Name>
        <LName>Aba</LName>
    </Person>
</Employees>

I declare a XElement variable and create the XML assigning it to that. How I can get count of ID elements in this XML variable in C#?

Upvotes: 21

Views: 40484

Answers (3)

Ahmad Mageed
Ahmad Mageed

Reputation: 96557

Prerequisite: in order to use .Count() you need to import the namespace System.Linq:

using System.Linq;

You can filter the descendant elements using the Descendants method with the name "ID", then count the results:

int count = xml.Descendants("ID").Count();

Be aware that Descendants looks through all levels. If you had an element other than Person that also had an ID child element, you would want to be more specific. In that case, to count ID child elements that belong to Person elements, you would use:

int count = xml.Elements("Person")
               .Elements("ID")
               .Count();

Upvotes: 42

XmlDocument xmldoc = new XmlDocument();
 xmldoc.Load(XmlPath);
var totalItems = xmldoc.SelectNodes(
         "/root/node/LastName/").Count;

Upvotes: 1

Nuffin
Nuffin

Reputation: 3972

var cnt = element.Descendants("ID").Count();

Upvotes: 0

Related Questions