2012-01-06 14 views
13

Considere este XML:Como llegar elemento específico Count en XML o variable XElement

<Employees> 
    <Person> 
     <ID>1000</ID> 
     <Name>Nima</Name> 
     <LName>Agha</LName> 
    </Person> 
    <Person> 
     <ID>1001</ID> 
     <Name>Ligha</Name> 
     <LName>Ligha</LName> 
    </Person> 
    <Person> 
     <ID>1002</ID> 
     <Name>Jigha</Name> 
     <LName>Jigha</LName> 
    </Person> 
    <Person> 
     <ID>1003</ID> 
     <Name>Aba</Name> 
     <LName>Aba</LName> 
    </Person> 
</Employees> 

que declara una variable XElement y crear el XML de asignarlo a eso. ¿Cómo puedo contar los elementos ID en esta variable XML en C#?

Respuesta

32

Puede filtrar los elementos descendientes utilizando el Descendants method con el nombre de "ID", y luego contar los resultados:

int count = xml.Descendants("ID").Count(); 

Sé consciente de que Descendants mira a través de todos los niveles. Si tenía un elemento distinto de Person que también tenía un elemento hijo ID, le gustaría ser más específico. En ese caso, para contar ID elementos secundarios que pertenecen a Person elementos, se debería utilizar:

int count = xml.Elements("Person") 
       .Elements("ID") 
       .Count(); 
+0

Si usted no usa 'elemets ("Empleados")' devuelve 0: - ? – Arian

+1

@Nima en función de su entrada de muestra 'Empleados' es el nodo raíz, y si está utilizando un' XElement' no es necesario que 'Elements (" Employee ")' forme parte de la consulta. Si no es el elemento raíz, puede incluirlo o usar 'xml.Descendants (" Person "). Elements (" ID "). Count()' en su lugar, evitando así la necesidad de recorrer el elemento XML por elemento. –

0
var cnt = element.Descendants("ID").Count(); 
0
XmlDocument xmldoc = new XmlDocument(); 
xmldoc.Load(XmlPath); 
var totalItems = xmldoc.SelectNodes(
     "/root/node/LastName/").Count; 
Cuestiones relacionadas