Здравствуйте.
Я загружаю в программу некоторый XML-документ:
var xml = XDocument.Load(pathToXMLFile);
Содержание этого XML-документа выглядит вот так:
<ROOT>
<data>
<record>
<field name="OID">51278ACDZF...</field>
<field name="Country or Area">AFGHANISTAN, I.R. OF</field>
<field name="Year">1989</field>
<field name="Description">TRADE BALANCE</field>
<field name="Magnitude">MILLIONS OF US$</field>
<field name="Value">-371200000</field>
</record>
<record>
<field name="OID">51278AEDZF...</field>
<field name="Country or Area">AFGHANISTAN, I.R. OF</field>
<field name="Year">1989</field>
<field name="Description">SERVICES: DEBIT</field>
<field name="Magnitude">MILLIONS OF US$</field>
<field name="Value">-103400000</field>
</record>
</data>
</ROOT>
Мне необходимо посчитать какое количество узлов
<field>
, располагается внутри родительского узла
<record>
.
В данном примере их по 6 штук (в каждом узле
<record>
). Но в разных XML-документах это количество будет разным.
Как реализовать подсчет количества узлов
<field>
внутри узла
<record>
, в XML-документе?
P.S. Внутри одного XML-документа, количество узлов
<field>
внутри узла
<record>
, постоянно. То есть, если, к примеру, в первом узле
<record>
находиться 5 узлов
<field>
, то тогда и в остальных узлах
<record>
, этого XML-документа, будет столько же узлов
<field>
.
P.P.S. Я использую вот такой способ:
int p = 0;
xml.XPathSelectElements("//record").ToList().ForEach(n =>
{
p = p + 1;
});
int q = 0;
xml.XPathSelectElements("//field").ToList().ForEach(n =>
{
q = q + 1;
});
int m = q / p;
//где m - требуемое число
и этот способ всё правильно считает, но я думаю, что этот способ излишне нагружает процессор (так как 2 раза полностью "читается" XML-документ).