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;