如何计算包含特定值的XML节点的数量

时间:2011-01-10 19:58:51

标签: c# xml xpath

我正在寻找如何计算XML文件中包含值“No”的节点以及元素总数。

我的元素计数工作正常,但我不确定在XML中查找要计数的值的逻辑。

获取我正在使用的总计数:

    XmlDocument readDoc = new XmlDocument();
    readDoc.Load(MapPath("Results.xml"));
    int count = readDoc.SelectNodes("root/User").Count;
    lblResults.Text = count.ToString();

以下是我的XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
  <User>
    <URL>http://www.example.com</URL>
    <JSEnabled>Yes</JSEnabled>
  </User>
  <User>
   <URL>http://www.example.com</URL>
   <JSEnabled>Yes</JSEnabled>
 </User>
 <User>
   <URL>http://www.example.com</URL>
   <JSEnabled>Yes</JSEnabled>
 </User>
 <User>
   <URL>http://www.example.com</URL>
   <JSEnabled>Yes</JSEnabled>
 </User>
 <User>
   <URL>http://www.example.com</URL>
   <JSEnabled>No</JSEnabled>
 </User>

2 个答案:

答案 0 :(得分:7)

XmlDocument readDoc = new XmlDocument();
readDoc.Load(MapPath("Results.xml"));
int count = readDoc.SelectNodes("root/User").Count;
lblResults.Text = count.ToString();
int NoCount = readDoc.SelectNodes("JSEnabled[. = \"No\"]").Count;

这里很好的参考:http://msdn.microsoft.com/en-us/library/ms256086.aspx

答案 1 :(得分:1)

  

我正在寻找如何计算   XML文件中包含的节点   “不”的价值

在XPath中:

count(/root/User[JSEnabled = 'No'])
  

以及总数   元件。

你已经拥有它了:

count(/root/User)

或者使用表达式选择节点和任何DOM方法来计算节点集结果成员。