tags:

views:

81

answers:

3

See this XML:


<CMP>

<OMP3>

<personmenu>

<submenuid>502</submenuid>

<submenuid>503</submenuid>

</personmenu>

<accountsmenu>

<submenuid>517</submenuid>

<submenuid>518</submenuid>

<submenuid>519</submenuid>

</accountsmenu>

<reportsmenu>

<submenuid>522</submenuid>

<submenuid>528</submenuid>

<submenuid>536</submenuid>

</reportsmenu>

</OMP3>

<AMP3>

<admissionmenu>

<submenuid>702</submenuid>

<submenuid>703</submenuid>

</admissionmenu>

</AMP3>

</CMP>

I want to get the total count of nodes from this xml dynamically (C#). How can I do it? Any sample code?

A: 

Use XmlDocument like this:

XmlDocument xmlD = new XmlDocument();
xmlD.Load(Server.MapPath("sample.xml"));
XmlNodeList xmlNL = xmlD.GetElementsByTagName("tagName");
xmlNL.Count;
sashaeve
A: 

Here's an example of counting all submenuid nodes in your xml document without loading it into memory:

var nodeCount = 0;
using (var reader = XmlReader.Create("test.xml"))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element && 
            reader.Name == "submenuid")
        {
            nodeCount++;
        }
    }
}
Console.WriteLine(nodeCount);

Or if you prefer LINQ to XML:

var count = XDocument
    .Load("test.xml")
    .XPathSelectElements("//submenuid")
    .Count();
Darin Dimitrov
A: 

You can use XPath function "count" as well. here is a example.

XPathDocument doc = new XPathDocument("c:\\test.xml");
int count = (int)doc.CreateNavigator().Evaluate("count(//submenuid)");
affan