Подсчет количества элементов в документе XML - PullRequest
6 голосов
/ 25 ноября 2010

Мне интересно, возможно ли подсчитать количество элементов в XML-документе, предпочтительно с возможностью подгонки, используя нечто подобное where (string)query.Attribute("attName") == att.

Насколько я знаю, я попробовал следующее, но, к сожалению, не могу заставить его работать.

                        var listElements = reader.Elements("shortlist");

                        foreach (var element in listElements)
                        {
                            XElement _xml;
                            location.Position = 0;
                            System.IO.StreamReader file = new System.IO.StreamReader(location);
                            _xml = XElement.Parse(file.ReadToEnd());
                            XAttribute attName = _xml.Attribute("attN");

                             if (attName.Value == att)
                            {
                                Count++;
                            }                              
                        }

Спасибо!

Ответы [ 3 ]

10 голосов
/ 25 ноября 2010

Учитывая, что документ является экземпляром XDocument

doc.Root.Descendants().Count(d => (string)d.Attribute("attName") == "value");
0 голосов
/ 26 ноября 2010
XmlDocument x = XmlDocument.Load("data.xml");   //pls excuse if i got the syntax wrong
XmlNodeList n = x.SelectNodes("//*[@attName='attValue']");
//Selects any element occuring anywhere in the document with Attribute attName='attValue'

int tadaa = n.Count;
0 голосов
/ 25 ноября 2010

Это, вероятно, было бы хорошим приложением для использования XPath.

http://support.microsoft.com/kb/308333/en-us

xpath может быть "count (// * [@ attName = 'attValue'])".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...