Подсчет количества элементов в 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;