计算XML中的特定XML节点

Job*_*obi 4 c# xml asp.net

看到这个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>
Run Code Online (Sandbox Code Playgroud)

我想动态地从这个xml中获取节点的总数(C#).我该怎么做?任何示例代码?

Dar*_*rov 12

这是一个计算submenuidxml文档中所有节点而不将其加载到内存中的示例:

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);
Run Code Online (Sandbox Code Playgroud)

或者如果您更喜欢LINQ to XML:

var count = XDocument
    .Load("test.xml")
    .XPathSelectElements("//submenuid")
    .Count();
Run Code Online (Sandbox Code Playgroud)


sas*_*eve 6

像这样使用XmlDocument:

XmlDocument xmlD = new XmlDocument();
xmlD.Load(Server.MapPath("sample.xml"));
XmlNodeList xmlNL = xmlD.GetElementsByTagName("tagName");
xmlNL.Count;
Run Code Online (Sandbox Code Playgroud)