2011-01-10 5 views
4

Я ищу, как подсчитать узлы в файле XML, которые содержат значение «Нет», а также общее количество элементов.Как подсчитать количество узлов XML, которые содержат определенное значение

У меня есть счетчик элементов, отлично работающий, но я не уверен в логике, чтобы заглянуть в 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> 

ответ

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

+0

Это вызвало у меня то, что я просил, но после прочтения этой ссылки ссылки я смог получить еще больше, чем изначально искал. Большое спасибо – InsertOldUserIDHere

+0

'NoCount', вероятно, должен быть' XmlNodeList' вместо 'int'. Кроме того, вы должны использовать 'readDoc.SelectNodes (" JSEnabled [. = \ "No \"] "). Count'. – Brian

1

Я ищу, как сосчитать узлы в файле XML, которые содержат значение «Нет»

В XPath:

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

, а также общее количество элементов.

что у вас уже есть:

count(/root/User) 

Или использовать выражение для выбора узлов и любой метод DOM сосчитать Node Set пользователей Result.