2012-01-06 39 views
13

yılında Kont almak için: spesifik eleman bu XML düşünün XML veya XElement değişken

<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> 

Ben XElement değişken bildirmek ve bu atamadan XML oluşturun. Bu XML değişkeninde C# olarak ID öğesinin sayısını nasıl alabilirim?

cevap

32

Sen adı "ID" ile Descendants method kullanarak alt öğelerini filtreleyebilirsiniz, ardından sonuçları saymak:

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

Descendants her düzeyde bakar unutmayın. Person dışında bir ID alt öğesi olan bir öğeniz varsa, daha spesifik olmak istersiniz. Bu durumda, Person elemanlarına ait ID alt öğeleri saymak için şunları kullanırsınız:

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

Eğer 'elemets ("Çalışan") kullanmazsanız' 0 döndürür: - ? – Arian

+1

@Nima 'Çalışanlar' örnek girdinize göre temel düğümdür ve eğer bir "XElement" kullanıyorsanız, "Elements (" Employee ")' nin sorgunun bir parçası olmasına gerek yoktur. Eğer kök eleman değilse, o zaman onu içerebilir ya da 'xml.Descendants (" Kişi ") 'yi kullanabilirsiniz. Elementler (" ID "). Count()' yerine, böylece XML öğesinin yürümesine gerek kalmaz. öğeye göre. –

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