Search code examples
c#xmlxmldocument

Count XML element Value


Im Trying to count Value in Team Element throw all Xml nodes and populate it to List box in this format: Team1, Count 3. Thnx for help

    XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Team");
        foreach (XmlNode xNode in nodeList)
        {
            foreach (var item in xNode)
            {
                lstRegPartiData.Items.Add(xNode.InnerText + item);   
            }
        }

Here im try to count elements by value.

And this is my xml template.

           <Participants>
              <Participant>
                <DateTime>21.04.2018</DateTime>
                <FullName>N1</FullName>
                <Email>email@gmail.com</Email>
                <Phone>123456789</Phone>
                <DateOfBirth>00/00/1988</DateOfBirth>
                <Team>Team1</Team>
                <MainWeapon>T1</MainWeapon>
                <MainWeaponChrono>120-130 m\s</MainWeaponChrono>
                <WeaponClass>C1</WeaponClass>
                <Comment>Hello World</Comment>
              </Participant>
              <Participant>
                <DateTime>21.04.2018</DateTime>
                <FullName>N1</FullName>
                <Email>email@gmail.com</Email>
                <Phone>987654321</Phone>
                <DateOfBirth>00/00/1988</DateOfBirth>
                <Team>Team1</Team>
                <MainWeapon>T1</MainWeapon>
                <MainWeaponChrono>120-130 m\s</MainWeaponChrono>
                <WeaponClass>C1</WeaponClass>
                <Comment>My Comment</Comment>
              </Participant>
               <Participant>
                <DateTime>21.04.2018</DateTime>
                <FullName>N1</FullName>
                <Email>email@gmail.com</Email>
                <Phone>123456789</Phone>
                <DateOfBirth>00/00/1988</DateOfBirth>
                <Team>Team1</Team>
                <MainWeapon>T1</MainWeapon>
                <MainWeaponChrono>120-130 m\s</MainWeaponChrono>
                <WeaponClass>C1</WeaponClass>
                <Comment>Hello World</Comment>
              </Participant>
            </Participants>

Solution

  • Maybe you can do something like this

    XmlDocument readDoc = new XmlDocument();
    readDoc.Load(@"XML.xml");
    var Node = readDoc.SelectNodes("Participants/Participant/Team");
    Dictionary<string, int> teamList = new Dictionary<string, int>();
    foreach (XmlNode n in Node)
    {
        if (teamList.ContainsKey(n.InnerText))
            teamList[n.InnerText]++;
        else
            teamList.Add(n.InnerText, 1);
    }
    

    i know its not look good but it should work