如何计算XML文档中特定节点的子节点

本文关键字:节点 子节点 文档 XML 何计算 计算 | 更新日期: 2023-09-27 18:23:35

我对c#更熟悉。我必须解析xml文档,并且必须计算子节点的特定节点。

例如:

<Root>
   <Id/>
   <EmployeeList>
      <Employee>
         <Id/>
         <EmpName/>
      </Employee>
      <Employee>
         <Id/>
         <EmpName/>
      </Employee>
      <Employee>
         <Id/>
         <EmpName/>
      </Employee>
    </EmployeeList>
</Root>

在这个xml中,如何计算"Employee"节点??

如何使用C#中的XmlDocument类解析并获得解决方案?

如何计算XML文档中特定节点的子节点

int Count = doc.SelectNodes("Employee").Count;

您可以使用XPath

var xdoc = XDocument.Load(path_to_xml);
var employeeCount = (double)xdoc.XPathEvaluate("count(//Employee)");

使用linq到xml可以完成:

XElement xElement = XElement.Parse(xml);
int count = xElement.Descendants("Employee").Count();

这假设您的xml位于字符串xml中。

XmlDocument doc = new XmlDocument();
doc.LoadXml(XmlString);
XmlNodeList list = doc.SelectNodes("Root/EmployeeList/Employee");
int numEmployees = list.Count;

如果xml来自文件,请使用

doc.Load(PathToXmlFile);

我强烈建议使用System.Xml.Linq库。它比你想用的要好得多。一旦您加载了XDocument,您就可以获得根节点并按照以下步骤执行操作:

//Parse the XML into an XDocument
int count = 0;
foreach(XElement e in RootNode.Element("EmployeeList").Elements("Employee"))
  count++;

这段代码并不准确,但您可以在这里查找更复杂的示例:http://broadcast.oreilly.com/2010/10/understanding-c-simple-linq-to.html