2012-01-06 1 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 назначая его к этому. Как я могу получить количество ID элементов в этой переменной XML в C#?

ответ

32

Вы можете фильтровать элементы потомков, используя Descendants method с именем «ID», а затем подсчитывать результаты:

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

Имейте в виду, что Descendants смотрит на всех уровнях. Если у вас есть элемент, отличный от Person, который также имеет дочерний элемент ID, вы бы хотели быть более конкретным. В этом случае считать ID дочерние элементы, которые принадлежат Person элементов, вы будете использовать:

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

Если вы не используете 'Elemets ("Сотрудники")' возвращает 0: - ? – Arian

+1

@Nima на основе вашего примера ввода «Сотрудники» - это корневой узел, и если вы используете «XElement», для элемента «Элементы» («Сотрудник») не нужно быть частью запроса. Если это не корневой элемент, вы можете либо включить его, либо использовать 'xml.Descendants (« Person »). Элементы (« ID »). Count() вместо этого, тем самым избегая необходимости ходить по элементу XML по элементу. –

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