首页 > 解决方案 > 从列表视图填充 xml 的 C# 问题

问题描述

从列表视图值填充 XML 文件时出现问题。我有一个预定义的 XML 结构,需要填充数据。这是我正在使用的代码

const int Pozicija0 = 0;
        const int Pozicija1 = 1;
        const int Pozicija2 = 2;
        const int Pozicija3 = 3;
        const int Pozicija4 = 4;
        const int Pozicija5 = 5;
        const int Pozicija6 = 6;

        for (int i = 0; i < listView1.Items.Count; i++)
        {
            string Item0 = listView1.Items[i].SubItems[Pozicija0].Text;
            string Item1 = listView1.Items[i].SubItems[Pozicija1].Text;
            string Item2 = listView1.Items[i].SubItems[Pozicija2].Text;
            string Item3 = listView1.Items[i].SubItems[Pozicija3].Text;
            string Item4 = listView1.Items[i].SubItems[Pozicija4].Text;
            string Item5 = listView1.Items[i].SubItems[Pozicija5].Text;
            string Item6 = listView1.Items[i].SubItems[Pozicija6].Text;

            decimal d3 = decimal.Parse(Item6);
            decimal d2 = decimal.Parse(Item4);
            decimal d1 = decimal.Parse(Item5);
            DateTime date = DateTime.Parse(Item3);
            string a = Convert.ToString(date.ToString("yyyy-MM-dd"));




            XElement xml = new XElement("PaketniUvozObrazaca",
                new XElement("PodaciOPoslodavcu",
                    new XElement("JIBPosladavca", label8.Text),
                    new XElement("NazivPoslodavca", label9.Text),
                    new XElement("BrojZahtjeva", 1),
                    new XElement("DatumPodnosenja", dateTimePicker1.Value.ToString("yyyy-MM-dd"))),
                new XElement("Obrazac1023",
                    new XElement("Dio1",
                        new XElement("JibJMB", label8.Text),
                        new XElement("Naziv", label9.Text),
                        new XElement("DatumUpisa", dateTimePicker1.Value.ToString("yyyy-MM-dd")),
                        new XElement("BrojUposlenih", label5.Text),
                        new XElement("PeriodOd", dateTimePicker2.Value.ToString("yyyy-MM-dd")),
                        new XElement("PeriodDo", dateTimePicker3.Value.ToString("yyyy-MM-dd")),
                        new XElement("SifraDjelatnosti", label10.Text))),        
                    new XElement("Dio2",
                        new XElement("PodaciOPrihodima",                       
                            new XElement("VrstaIsplate", Item0),                                    
                            new XElement("Jmb", Item1),
                            new XElement("ImePrezime", Item2),
                            new XElement("DatumIsplate", a),
                            new XElement("RadniSati", d2),
                            new XElement("RadniSatiBolovanje", d1),
                            new XElement("BrutoPlaca", d3))));               
                
            xml.Save("C:\\oemPlate\\Emir.xml");
        }

我遇到的问题是它只导出列表视图中的最后一行并忽略所有其他行。

任何帮助将不胜感激。

谢谢

标签: c#xmllistview

解决方案


我稍微移动了代码。见下文

            const int Pozicija0 = 0;
            const int Pozicija1 = 1;
            const int Pozicija2 = 2;
            const int Pozicija3 = 3;
            const int Pozicija4 = 4;
            const int Pozicija5 = 5;
            const int Pozicija6 = 6;

            string ident = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><PaketniUvozObrazaca></PaketniUvozObrazaca>";
            XDocument doc = XDocument.Parse(ident);
            XElement PaketniUvozObrazaca = doc.Root;

            PaketniUvozObrazaca.Add(
                    new XElement("PodaciOPoslodavcu",
                        new XElement("JIBPosladavca", label8.Text),
                        new XElement("NazivPoslodavca", label9.Text),
                        new XElement("BrojZahtjeva", 1),
                        new XElement("DatumPodnosenja", dateTimePicker1.Value.ToString("yyyy-MM-dd"))));

            for (int i = 0; i < listView1.Items.Count; i++)
            {
                string Item0 = listView1.Items[i].SubItems[Pozicija0].Text;
                string Item1 = listView1.Items[i].SubItems[Pozicija1].Text;
                string Item2 = listView1.Items[i].SubItems[Pozicija2].Text;
                string Item3 = listView1.Items[i].SubItems[Pozicija3].Text;
                string Item4 = listView1.Items[i].SubItems[Pozicija4].Text;
                string Item5 = listView1.Items[i].SubItems[Pozicija5].Text;
                string Item6 = listView1.Items[i].SubItems[Pozicija6].Text;

                decimal d3 = decimal.Parse(Item6);
                decimal d2 = decimal.Parse(Item4);
                decimal d1 = decimal.Parse(Item5);
                DateTime date = DateTime.Parse(Item3);
                string a = Convert.ToString(date.ToString("yyyy-MM-dd"));

                XElement Obrazac1023 = 
                    new XElement("Obrazac1023",
                        new XElement("Dio1",
                            new XElement("JibJMB", label8.Text),
                            new XElement("Naziv", label9.Text),
                            new XElement("DatumUpisa", dateTimePicker1.Value.ToString("yyyy-MM-dd")),
                            new XElement("BrojUposlenih", label5.Text),
                            new XElement("PeriodOd", dateTimePicker2.Value.ToString("yyyy-MM-dd")),
                            new XElement("PeriodDo", dateTimePicker3.Value.ToString("yyyy-MM-dd")),
                            new XElement("SifraDjelatnosti", label10.Text))),
                        new XElement("Dio2",
                            new XElement("PodaciOPrihodima",
                                new XElement("VrstaIsplate", Item0),
                                new XElement("Jmb", Item1),
                                new XElement("ImePrezime", Item2),
                                new XElement("DatumIsplate", a),
                                new XElement("RadniSati", d2),
                                new XElement("RadniSatiBolovanje", d1),
                                new XElement("BrutoPlaca", d3)));
                PaketniUvozObrazaca.Add(Obrazac1023);

            }
            doc.Save("C:\\oemPlate\\Emir.xml");

推荐阅读