C#从列表视图填充xml的问题



从列表视图值填充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");
}

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

如有任何帮助,我们将不胜感激。

谢谢

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

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");

谢谢,这一个可以工作并从列表视图中添加数据。但我只是看到我没有完全澄清,

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))),

上面的这部分是一个静态值,它只需要在xml上显示一次,下面显示的xml部分需要从列表视图中填充,这可行吗。

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的新手,正在尝试解决这个问题。如果我在第一个块重复的情况下将XML传递给服务器,服务器会拒绝XML,认为它无效,

最新更新