2012-01-06 13 views
13

में गणना इस एक्सएमएल पर विचार करें:कैसे प्राप्त करने के लिए विशिष्ट तत्व 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 चर घोषित करने और एक्सएमएल कि करने के लिए यह बताए पैदा करते हैं। मैं सी # में इस एक्सएमएल चर में ID तत्वों की गिनती कैसे प्राप्त कर सकता हूं?

उत्तर

32

आप नाम "आईडी" के साथ Descendants method का उपयोग कर वंशज तत्वों फ़िल्टर कर सकते हैं, तो परिणाम गिनती:

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

पता है कि Descendants सभी स्तरों के माध्यम से लग रहा है हो सकता है। यदि आपके पास Person के अलावा कोई तत्व था जिसमें ID बाल तत्व भी था, तो आप अधिक विशिष्ट होना चाहते हैं। उस मामले में, ID बच्चे तत्वों कि Person तत्वों के हैं गिनती करने के लिए, आप का प्रयोग करेंगे:

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

आप उपयोग नहीं करते हैं 'elemets (" कर्मचारी ")' यह रिटर्न 0: - ? – Arian

+1

@ निमा आपके नमूना इनपुट 'कर्मचारी' के आधार पर रूट नोड है, और यदि आप 'XElement' का उपयोग कर रहे हैं तो' तत्वों ("कर्मचारी") के लिए क्वेरी की कोई आवश्यकता नहीं है। यदि यह मूल तत्व नहीं है, तो आप इसे या तो शामिल कर सकते हैं, या 'xml.Descendants ("व्यक्ति") का उपयोग कर सकते हैं। तत्व ("आईडी")। इसके बजाय गणना करें()', इस प्रकार, XML तत्व पर चलने की आवश्यकता से परहेज करें तत्व द्वारा –

0
XmlDocument xmldoc = new XmlDocument(); 
xmldoc.Load(XmlPath); 
var totalItems = xmldoc.SelectNodes(
     "/root/node/LastName/").Count;