2010-11-25 14 views
6

Me pregunto si es posible contar la cantidad de elementos en un documento XML que, de preferencia, pueden ser ajustados usando algo similar al where (string)query.Attribute("attName") == att.Contando el número de elementos en un documento XML

Usando el mejor de mi conocimiento, he intentado lo siguiente pero desafortunadamente no puedo hacer que funcione.

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

¡Gracias!

+1

¿Qué versión de Silverlight se dirige? –

+1

Es para Windows Phone 7 por lo que yo sé, es principalmente 3 con algunas características de 4 – Jamie

Respuesta

10

Teniendo en cuenta que el doc es una instancia de XDocument

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

Gracias por la respuesta rápida. ¿Simplemente pongo 'int Count = doc.Root ...' para que pueda usar el conteo? – Jamie

+0

Sí, eso debería hacerlo. –

+0

El 'Where' lambda se puede simplificar a' d => (cadena) d.Attribute ("attName") == "value" 'y como el' Count' tiene una sobrecarga que toma una condición, puede eliminar 'Donde 'en conjunto y mover la lambda dentro del' Count'. – AnthonyWJones

0
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

'XmlDocument' no disponible en silverlight/Windows Phone 7 – AnthonyWJones

+0

Lo intenté pero no creo que Silverlight admita la función' XmlNodeList' – Jamie

+0

Vaya, lo siento para hacer doble comentario, sí, la sintaxis correcta sería 'XDocument' en lugar de' xmlDocument' – Jamie

Cuestiones relacionadas