1

我对 c# 比较陌生。我必须解析 xml 文档并且必须计算子节点的特定节点。

例如:

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

在这个 xml 中,我如何计算“Employee”节点?

如何在 C# 中使用 XmlDocument 类解析和获取解决方案?

4

5 回答 5

5
int Count = doc.SelectNodes("Employee").Count;
于 2013-07-16T13:57:19.633 回答
4

您可以使用 XPath

var xdoc = XDocument.Load(path_to_xml);
var employeeCount = (double)xdoc.XPathEvaluate("count(//Employee)");
于 2013-07-16T14:02:49.393 回答
2
XmlDocument doc = new XmlDocument();
doc.LoadXml(XmlString);

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

如果 xml 来自文件,请使用

doc.Load(PathToXmlFile);
于 2013-07-16T13:57:33.347 回答
2

使用 linq to xml 你可以这样做:

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

这假设您在字符串 xml 中有您的 xml。

于 2013-07-16T13:58:56.593 回答
1

我强烈建议改用该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

于 2013-07-16T14:11:33.127 回答