2012-01-06 7 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

あなたが名前「ID」とDescendants methodを使用して子孫要素をフィルタリングすることができ、その結果を数える:

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

Descendantsは、すべてのレベルを介して見えることに注意してください。 Person以外の要素があり、子要素がIDの場合は、より具体的にすることをお勧めします。その場合には、Person要素に属しID子要素をカウントするために、あなたが使用します。

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

をあなたは 'Elemets(「従業員」)を使用していない場合は'それは0を返します - ? – Arian

+1

サンプル入力の 'Employees'に基づく@Nimaはルートノードであり、' XElement'を使用している場合、 'Elements(" Employee ")'はクエリの一部である必要はありません。ルート要素でない場合は、それをインクルードするか、 'xml.Descendants(" Person ")。要素(" ID ")。Count()を使用して、XML要素をウォークする必要がなくなります要素ごとに –

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