Это мой xml файл. Я хочу прочитать весь внутренний тест всех дочерних элементов exp
<TreasuryExp xmlns="http://page.com/Exp" MsgDtTm="2020-06-08T12:30:35.283"
MessageId="11EXP080620201" Source="11" Destination="CPSMS" Name="user1" RecordsCount="1861"
NetAmountSum="4440306976.00">
<Exp>
<Year1>2018</Year1>
<Year2>2019</Year2>
<Code>11</Code>
<Budget>205500101638352</Budget>
<ObjectHeadCode>52_400</ObjectHeadCode>
<DDOCode>300008</DDOCode>
<VoucherNumber>5994</VoucherNumber>
<Date>31/03/2019</Date>
<GrossAmount>51200.00</GrossAmount>
<DeductionAmount>0.00</DeductionAmount>
<NetAmount>51200.00</NetAmount>
<UniqueID>3392430</UniqueID>
<PayeeCount>0</PayeeCount>
<PayDetail>N</PayDetail>
<PayeeDetails />
</Exp>
<Exp>
<Year1>2018</Year1>
<Year2>2019</Year2>
<Code>11</Code>
<Budget>205500101638352</Budget>
<ObjectHeadCode>52_400</ObjectHeadCode>
<DDOCode>300008</DDOCode>
<VoucherNumber>5995</VoucherNumber>
<Date>31/03/2019</Date>
<GrossAmount>4400.00</GrossAmount>
<DeductionAmount>0.00</DeductionAmount>
<NetAmount>4400.00</NetAmount>
<UniqueID>3303530</UniqueID>
<PayeeCount>0</PayeeCount>
<PayDetail>N</PayDetail>
<PayeeDetails />
</Exp>
</TreasuryExp>
i, прочитать его и запустить на l oop, но m получение возвращаемых одинаковых элементов каждый раз
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("E:/trial/Expenditure.xml");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmldoc.NameTable);
XmlAttributeCollection attrColl = xmldoc.DocumentElement.Attributes;
var xmlnsattribute = attrColl.GetNamedItem("xmlns").Value;
XmlNodeList xmlnodli = xmldoc.SelectNodes("//ab:Expenditure", nsmgr);
List<Expenditure> strli = new List<Expenditure>();
здесь я запускаю al oop для загрузки в список, чтобы получить значение xml узлов, или вы можете сказать значения каждого узла
foreach (XmlNode xm in xmlnodli)
{
fin_year1 = Convert.ToInt32(xm.SelectSingleNode("//ab:Year1", nsmgr).InnerText),
fin_year2 = Convert.ToInt32(xm.SelectSingleNode("//ab:Year2", nsmgr).InnerText),
statecode = Convert.ToInt32(xm.SelectSingleNode("//ab:Code", nsmgr).InnerText),
budgetcode = Convert.ToInt64(xm.SelectSingleNode("//ab:Budget", nsmgr).InnerText),
objectheadcode = (xm.SelectSingleNode("//ab:ObjectHeadCode", nsmgr).InnerText).ToString(),
ddocode = xm.SelectSingleNode("//ab:DDOCode", nsmgr).InnerText.ToString(),
vouchernumber = Convert.ToInt32(xm.SelectSingleNode("//ab:VoucherNumber", nsmgr).InnerText),
date = Convert.ToDateTime(xm.SelectSingleNode("//ab:Date", nsmgr).InnerText),
grossamount = Convert.ToDecimal(xm.SelectSingleNode("//ab:GrossAmount", nsmgr).InnerText),
deductionamount = Convert.ToDecimal(xm.SelectSingleNode("//ab:DeductionAmount", nsmgr).InnerText),
netamount = Convert.ToDecimal(xmlnodli[i].SelectSingleNode("NetAmount", nsmgr).InnerText.ToString()),
objectheadcode = Convert.ToString(xm.SelectNodes("//ab:NetAmount", nsmgr)),
stateexpuniqueid = Convert.ToInt32(xm.SelectSingleNode("//ab:StateExpUniqueID", nsmgr).InnerText),
payeecount = Convert.ToInt32(xm.SelectSingleNode("//ab:PayeeCount", nsmgr).InnerText),
paydetail = Convert.ToString(xm.SelectSingleNode("//ab:PayDetail", nsmgr).InnerText),
}
return strli;
вот мой DTO
public class Expenditure
{
public int year1 { get; set; }
public int year2 { get; set; }
public int code { get; set; }
public long budget { get; set; }
public string objectheadcode { get; set; }
public string ddocode { get; set; }
public int vouchernumber { get; set; }
public DateTime date { get; set; }
public decimal grossamount { get; set; }
public decimal deductionamount { get; set; }
public decimal netamount { get; set; }
public int stateexpuniqueid { get; set; }
public int payeecount { get; set; }
public string paydetail { get; set; }
public string payeedetails { get; set; }
public string xmlns { get; set; }
public string MsgDtTm { get; set; }
public string MessageId { get; set; }
public string Source { get; set; }
public string Destination { get; set; }
public string StateName { get; set; }
public string RecordsCount { get; set; }
public string NetAmountSum { get; set; }
}
Спасибо