Как удалить повторяющиеся или не отображать повторяющиеся значения в XML-документе
привет, проблема в том, что я создал приложение winform, которое может добавлять данные из datatable в xml-документ, а также обновлять, удалять. но я использую readxml () и writexml() для чтения данных из xml и записи данных в xml, но один раз, если я добавил одну строку в xml-документ, то если я снова хотел добавить одну строку, то строка добавляется с данными, а также предыдущими данными, как повторение всего datatable, и когда я открыл приложение, если я удалил одну строку, xml-документ становится ошибкой, и исключения приходят, пожалуйста, помогите мне
Что я уже пробовал:
private void Form1_Load(object sender, EventArgs e) { dtable.Columns.Add("NAME"); dtable.Columns.Add("DESIGNATION"); dtable.Columns.Add("COMPANY"); dgvxml.DataSource = dtable; ds.ReadXml(str); ds.WriteXml(str); dgvxml.DataSource = ds.Tables[0]; } private void btnadd_Click(object sender, EventArgs e) { dtable.TableName = "PARTICIPANTS"; if (a <= 0) { dtable.ReadXml(str); a++; } DataRow drow = dtable.NewRow(); drow["NAME"] = txtname.Text; drow["DESIGNATION"] = txtdesig.Text; drow["COMPANY"] = txtcomp.Text; dtable.Rows.Add(drow); dgvxml.DataSource = dtable; dtable.WriteXml(str); txtname.Text = ""; txtdesig.Text = ""; txtcomp.Text = ""; label4.Text = ""; timer1.Start(); } private void btndel_Click(object sender, EventArgs e) { try { if (txtname.Text == "" || txtcomp.Text == "" || txtcomp.Text == "") { label4.Text = "Select one row"; } else { int rowindex = dgvxml.CurrentCell.RowIndex; dgvxml.Rows.RemoveAt(rowindex); dtable.WriteXml(str); txtname.Text = ""; txtdesig.Text = ""; txtcomp.Text = ""; label4.Text = ""; btnadd.Visible = true; } } catch (Exception) { label4.Text = "Change the Xml file name and proceed"; } }
Sheila Pontes
ПРИВЕТ,
Что означает содержимое переменной str? В чем же ошибка?
Thomas Nielsen - getCore
Трудно сказать, с чего именно начать, было бы неплохо ввести понятие идентификатора или идентификатора, таким образом, два участника с одним и тем же именем одновременно возможны и идентифицируемы.
В вашей настройке вы хотите сохранить данные в ado. dataset и datatable и сохранить их в xml-документе. Но теперь вы действительно хотите отображать имена, если есть дубликаты, и логически не хранить их, я уверен.
Но тогда почему бы не использовать список и класс данных, а также linq и, скажем, Json, поскольку он менее раздут по сравнению с xml. Так что да, я бы рекомендовал перейти на более новые методы. это даст вам такие вещи, как distinct, бесплатно.
Не могли бы вы рассмотреть совершенно другую реализацию для решения вашей проблемы?