Я читаю данные из xml файлов и создаю новый объект LogoSatirVeri для каждой InvoiceLine, которая есть в документе. Xml читает правильно, например, для каждого идентификатора строки, xml читает 1,2,3 по порядку, но в списке obje c все объекты имеют одинаковый идентификатор строки, равный 1, а другие атрибуты одинаковы. как первый. Я попытался переместить создание Объекта из foreach l oop, объявив перед foreach l oop и создав его внутри l oop, объявив Xmlnodes внутри l oop, а затем объявив вне l oop. Код ниже и любая помощь приветствуется. Спасибо. PS: код на самом деле длиннее с большим количеством атрибутов, но этой части должно быть достаточно.
XmlNodeList elemList = root.GetElementsByTagName("cac:InvoiceLine");
XmlNodeList SatirdakiIskontoList;
Logoveri.logo_satirsayisi = elemList.Count.ToString(); //faturadaki satır sayısı
XmlNode satirno1,urunadi,urunkodu,urunmiktari,uruntutari;
string satirno;
foreach (XmlElement e in elemList)
{
LOGOSatirVeri Logosatirveri = new LOGOSatirVeri();
// Logosatirveri = new LOGOSatirVeri();
Logosatirveri.logo_uuid = Logoveri.logo_uuid;
try
{
//MALZEME-HİZMET ADI
satirno = e.SelectSingleNode("//*[name()='cac:InvoiceLine']/*[name()='cbc:ID']").InnerText;
Logosatirveri.logo_satirno = satirno;
}
catch { Logosatirveri.logo_satirno = null; }
try
{
//MALZEME-HİZMET ADI
urunadi = e.SelectSingleNode("//*[name()='cac:Item']/*[name()='cbc:Name']");
Logosatirveri.logo_malzemeadi = urunadi.InnerText;
}
catch { Logosatirveri.logo_malzemeadi = null; }
try
{
//MALZEME-HİZMET KODU
urunkodu = e.SelectSingleNode("//*[name()='cac:Item']/*[name()='cac:SellersItemIdentification']/*[name()='cbc:ID']");
Logosatirveri.logo_malzemekodu = urunkodu.InnerText;
}
catch { Logosatirveri.logo_malzemekodu = null; }
try
{
//MALZEME-HİZMET MİKTARI
urunmiktari = e.SelectSingleNode("//*[name()='cbc:InvoicedQuantity']");
Logosatirveri.logo_malzememiktari= urunmiktari.InnerText;
Logosatirveri.logo_birimkodu = urunmiktari.Attributes.Item(0).InnerText; //DENE???
}
catch { Logosatirveri.logo_malzememiktari = null; }
try
{
//MALZEME-HİZMET
uruntutari = e.SelectSingleNode("//*[name()='cbc:LineExtensionAmount']");
Logosatirveri.logo_tutar = float.Parse(uruntutari.InnerText, CultureInfo.InvariantCulture);
}
catch { }
try
{
//BİRİM TUTAR
Logosatirveri.logo_malzemebirimtutari = float.Parse(e.GetElementsByTagName("cbc:PriceAmount").Item(0).InnerText, CultureInfo.InvariantCulture);
//MALZEME BİRİM TUTARI
}
catch { Logosatirveri.logo_malzemebirimtutari = null; }
//HER SATIRIN SONUNDA YARATILAN LOGOSATIRVERİ NESNESİNİ BU LİSTEYE EKLİYOR
LogoSatirVeriList.Add(Logosatirveri);
}
//satırlar bitiyor
Edit1: я пытался использовать Inner Xml, так как я вижу в Visual Studio, что он идет 1,2,3 но строка сатирно не меняется до сих пор.
try
{
//MALZEME-HİZMET ADI
satirno = e.SelectSingleNode("//*
[name()='cac:InvoiceLine']/*
[name()='cbc:ID']").InnerXml;
Logosatirveri.logo_satirno = satirno;
}