F
F
fisker_f2015-02-17 17:39:17
C++ / C#
fisker_f, 2015-02-17 17:39:17

How to pull element data using LINQ to XML?

It is necessary to pull out data using LINQ from an xml file. The code below pulls the data, but doesn't quite fit.

public static string GetElementValue(this XElement xElement, string descendant, string childDescendant)
        {
            string attrArr = (from attr in xElement.Descendants(descendant)
                           select attr.Descendants(childDescendant).FirstOrDefault().Value).FirstOrDefault();
            return attrArr;
        }

In this case, in the descendant parameter I enter the data PayoutsAnd rewards_1966 older, and in the childDescendant SumTotalFirst of the SettlementPeriod and a string is returned. Is there any way to specify the lineCodeLine, for example 201, in the first parameter, and the SumTotalBeginning of the SettlementPeriod as the second parameter, and to display the value of the SumTotalBeginning of the SettlementPeriod element. It is necessary to get the data where the LineCode = 201, 202, 203 I
tried several ways, but it does not work.
XML file
<Раздел2РасчетПоТарифуДопТарифу>
        <Раздел2_1_РасчетСВпоТарифу>
          <КодТарифа>52</КодТарифа>
          <НаОбязательноеПенсионноеСтрахование>
            <ВыплатыИвознаграждения_1966старше>
              <КодСтроки>201</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>1111</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>
            </ВыплатыИвознаграждения_1966старше>
            <ВыплатыИвознаграждения_1967моложе>
              <КодСтроки>202</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>2222</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>
            </ВыплатыИвознаграждения_1967моложе>
            <ВыплатыИвознаграждения_ВременноИГ>
              <КодСтроки>203</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>3333</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>
            </ВыплатыИвознаграждения_ВременноИГ>

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Sumor, 2015-02-17
@Sumor

The following code is proposed to designate the thought vector:

foreach (var xe in xElement.XPathSelectElements(@".//*[КодСтроки=201 or КодСтроки=202 or КодСтроки=203]"))
{                
    MessageBox.Show(xe.XPathSelectElement(@".//СуммаВсегоСначалаРасчетногоПериода[1]").Value);
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question