@fisker_f

Как вытащить данные элемента с помощью LINQ to XML?

Необходимо вытащить данные с помощью LINQ из xml файла. Код ниже вытаскивает данные, но не совсем подходит.
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;
        }

В данном случае в параметр descendant ввожу данные ВыплатыИвознаграждения_1966старше, а в childDescendant СуммаВсегоСначалаРасчетногоПериода и возвращается строка. Если ли какой-то способ, чтобы в первый параметр указывать строку КодСтроки, например 201, а вторым параметром СуммаВсегоСначалаРасчетногоПериода, и чтобы выводилось значение элемента СуммаВсегоСначалаРасчетногоПериода. Необходимо достать данные, где КодСтроки = 201, 202, 203
Пробывал несколько способов, но не получается.

XML файл
<Раздел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месяц>
							</РасчетСумм>
						</ВыплатыИвознаграждения_ВременноИГ>
  • Вопрос задан
  • 2521 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Sumor
Для обозначения вектора раздумий предлагается следующий код:
using System.Xml.XPath;

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

Войдите, чтобы написать ответ

Похожие вопросы