Подсчет количества элементов в XML-документе

мне интересно, можно ли подсчитать количество элементов в XML-документе, предпочтительно имея возможность fitler, используя что-то похожее на 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 ответов


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

doc.Root.Descendants().Count(d => (string)d.Attribute("attName") == "value");

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

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

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


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;