Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算XML文档中的元素数_C#_Xml_Silverlight_Windows Phone 7 - Fatal编程技术网

C# 计算XML文档中的元素数

C# 计算XML文档中的元素数,c#,xml,silverlight,windows-phone-7,C#,Xml,Silverlight,Windows Phone 7,我想知道,如果能够更好地使用类似于where(string)query.Attribute(“attName”)==att的东西来计算XML文档中的元素数,是否可能 据我所知,我已经尝试了以下方法,但不幸的是,我似乎无法成功 var listElements = reader.Elements("shortlist"); foreach (var element in listElements)

我想知道,如果能够更好地使用类似于
where(string)query.Attribute(“attName”)==att
的东西来计算XML文档中的元素数,是否可能

据我所知,我已经尝试了以下方法,但不幸的是,我似乎无法成功

                        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++;
                            }                              
                        }

谢谢

这可能是使用XPath的一个很好的应用程序


xpath可以是“count(//*[@attName='attValue'])”

,因为doc是
XDocument的实例

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

你的目标是什么版本的Silverlight?据我所知,它是针对windows phone 7的,主要是3版,带有一些4Thanks的功能,以便快速响应。我是否只是简单地将
int Count=doc.Root…
放入,以便使用计数?可以将
Where
lambda简化为
d=>(string)d.Attribute(“attName”)=“value”
由于
计数
有一个重载,该重载需要一个条件,因此您可以将
Where
一起删除,并将lambda移动到
计数
中。我遇到了一个代码问题,如果没有找到具有该属性的元素,则返回0,如果1个元素,则返回0,如果2,则返回1。有什么办法可以解决这个问题吗?这不是我的经验。您确定属性的值与您正在比较的值相同吗?您能将XML添加到您的问题中吗?我可以稍后再看一看吗?
XmlDocument
在silverlight/Windows Phone 7中不可用我尝试过这一点,但我认为silverlight不支持
XmlNodeList
functionOops,抱歉重复评论,是的,正确的语法应该是
XDocument
而不是
xmlDocument
Windows Phone 7不支持XPath,因为它基于Silverlight 3。
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;