2012-01-06 54 views
13

計數考慮這個XML:如何獲得特定元素在XML或可變的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> 

我聲明一個變量XElement並創建XML將其分配到這一點。如何在C#中的此XML變量中計算出ID元素?

回答

32

可以過濾使用Descendants method名爲「ID」的後代元素,然後計算結果:

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

注意Descendants看起來通過各個層面。如果您有一個Person以外的元素也有一個ID子元素,您希望更具體。在這種情況下,算屬於Person元素ID子元素,你可以使用:

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

如果你不使用'Elemets( 「員工」)'則返回0: - ? – Arian 2012-01-06 21:34:08

+1

@Nima根據您的示例輸入'Employees'是根節點,如果您使用'XElement',則不需要將Elements(「Employee」)作爲查詢的一部分。如果它不是根元素,那麼可以包含它,或者使用'xml.Descendants(「Person」)。元素(「ID」).Count()'來代替,從而避免需要遍歷XML元素按元素。 – 2012-01-06 21:39:43

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