.NET 4.x Добавление данных в XML не верно - C#
Формулировка задачи:
Доброго всем времени суток,
Вот моя проблема, написана программа по примеру, она добавляет/редактирует/удаляет строки в XML в общем она работает, но создает данные не в том формате, что мне надо т.е
Мне нужно так
Но создает так
вот код
Листинг программы
- <comp_it_xml>
- <entry
- icon="matt"
- title="Тестовый товар 1"
- description="Мини описание"
- fulldescription="Полное описание"
- price="150"/>
- ....
- </comp_it_xml>
Листинг программы
- <comp_it_xml>
- <entry>
- <icon>matt.png</icon>
- <title>Test 3</title>
- <description>dfgdg dfz gfdz dg</description>
- <fulldescription> fdgr dfgghghgfhdg h dfg fgs fgs fgs fgs f </fulldescription>
- <price>130</price>
- </entry>
- ....
- </comp_it_xml>
Листинг программы
- public partial class Form1 : Form
- {
- public static string conf;
- public Form1()
- {
- InitializeComponent();
- CIASystem.config();
- CIASystem conf = new Core.CIASystem();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- // label
- lb_icon.Text = "Иконка";
- lb_title.Text = "Название";
- lb_description.Text = "Описание";
- lb_fulldescription.Text = "Полное описание";
- lb_price.Text = "Цена";
- // button
- btn_addProduct.Text = "Добавить продукт";
- btn_editProduct.Text = "Редактировать продукт";
- btn_delProduct.Text = "Удалить продукт";
- btn_saveAsXml.Text = "Сохранить как XML";
- btn_clearTable.Text = "Очистить столбцы";
- btn_downXml.Text = "Загрузить XML";
- }
- private void btn_addProduct_Click(object sender, EventArgs e)
- {
- if (tb_icon.Text == "")
- {
- MessageBox.Show("Заполните все поля.", "Ошибка.");
- }
- else
- {
- int n = dg_listProduct.Rows.Add();
- dg_listProduct.Rows[n].Cells[0].Value = tb_icon.Text;
- dg_listProduct.Rows[n].Cells[1].Value = tb_title.Text;
- dg_listProduct.Rows[n].Cells[2].Value = tb_description.Text;
- dg_listProduct.Rows[n].Cells[3].Value = tb_fulldescription.Text;
- dg_listProduct.Rows[n].Cells[4].Value = tb_price.Text;
- }
- }
- private void btn_editProduct_Click(object sender, EventArgs e)
- {
- if (dg_listProduct.SelectedRows.Count > 0)
- {
- int n = dg_listProduct.SelectedRows[0].Index;
- dg_listProduct.Rows[n].Cells[0].Value = tb_icon.Text;
- dg_listProduct.Rows[n].Cells[1].Value = tb_title.Text;
- dg_listProduct.Rows[n].Cells[2].Value = tb_description.Text;
- dg_listProduct.Rows[n].Cells[3].Value = tb_fulldescription.Text;
- dg_listProduct.Rows[n].Cells[4].Value = tb_price.Text;
- }
- else
- {
- MessageBox.Show("Выберите строку для редактирования.", "Ошибка.");
- }
- }
- private void btn_delProduct_Click(object sender, EventArgs e)
- {
- if (dg_listProduct.SelectedRows.Count > 0)
- {
- dg_listProduct.Rows.RemoveAt(dg_listProduct.SelectedRows[0].Index);
- }
- else
- {
- MessageBox.Show("Выберите строку для удаления.", "Ошибка.");
- }
- }
- private void btn_clearTable_Click(object sender, EventArgs e)
- {
- if (dg_listProduct.Rows.Count > 0)
- {
- dg_listProduct.Rows.Clear();
- }
- else
- {
- MessageBox.Show("Таблица пустая.", "Ошибка.");
- }
- }
- private void btn_downXml_Click(object sender, EventArgs e)
- {
- if (dg_listProduct.Rows.Count > 0) //если в таблице больше нуля строк
- {
- MessageBox.Show("Очистите поле перед загрузкой нового файла.", "Ошибка.");
- }
- else
- {
- if (File.Exists("comp_it_xml.xml")) // если существует данный файл
- {
- DataSet ds = new DataSet(); // создаем новый пустой кэш данных
- ds.ReadXml("comp_it_xml.xml"); // записываем в него XML-данные из файла
- foreach (DataRow item in ds.Tables["entry"].Rows)
- {
- int n = dg_listProduct.Rows.Add(); // добавляем новую сроку в dataGridView1
- dg_listProduct.Rows[n].Cells[0].Value = item["icon"]; // заносим в первый столбец созданной строки данные из первого столбца таблицы ds.
- dg_listProduct.Rows[n].Cells[1].Value = item["title"]; // то же самое со вторым столбцом
- dg_listProduct.Rows[n].Cells[2].Value = item["description"]; // то же самое с третьим столбцом
- dg_listProduct.Rows[n].Cells[3].Value = item["fulldescription"]; // то же самое с третьим столбцом
- dg_listProduct.Rows[n].Cells[4].Value = item["price"]; // то же самое с третьим столбцом
- }
- }
- else
- {
- MessageBox.Show("XML файл не найден.", "Ошибка.");
- }
- }
- }
- private void btn_saveAsXml_Click(object sender, EventArgs e)
- {
- try
- {
- DataSet ds = new DataSet("comp_it_xml"); // создаем пока что пустой кэш данных
- DataTable dt = new DataTable(); // создаем пока что пустую таблицу данных
- dt.TableName = "entry"; // название таблицы
- dt.Columns.Add("icon"); // название колонок
- dt.Columns.Add("title");
- dt.Columns.Add("description");
- dt.Columns.Add("fulldescription");
- dt.Columns.Add("price");
- ds.Tables.Add(dt); //в ds создается таблица, с названием и колонками, созданными выше
- foreach (DataGridViewRow r in dg_listProduct.Rows) // пока в dataGridView1 есть строки
- {
- DataRow row = ds.Tables["entry"].NewRow(); // создаем новую строку в таблице, занесенной в ds
- row["icon"] = r.Cells[0].Value; //в столбец этой строки заносим данные из первого столбца dataGridView1
- row["title"] = r.Cells[1].Value; // то же самое со вторыми столбцами
- row["description"] = r.Cells[2].Value; //то же самое с третьими столбцами
- row["fulldescription"] = r.Cells[3].Value; //то же самое с третьими столбцами
- row["price"] = r.Cells[4].Value; //то же самое с третьими столбцами
- ds.Tables["entry"].Rows.Add(row); //добавление всей этой строки в таблицу ds.
- }
- ds.WriteXml("comp_it_xml.xml");
- MessageBox.Show("XML файл успешно сохранен.", "Выполнено.");
- }
- catch
- {
- MessageBox.Show("Невозможно сохранить XML файл.", "Ошибка.");
- }
- }
- private void dg_listProduct_MouseClick(object sender, MouseEventArgs e)
- {
- try
- {
- tb_icon.Text = dg_listProduct.SelectedRows[0].Cells[0].Value.ToString();
- //int n = Convert.ToInt32(dg_listProduct.SelectedRows[0].Cells[1].Value);
- //numericUpDown1.Value = n;
- tb_title.Text = dg_listProduct.SelectedRows[0].Cells[1].Value.ToString();
- tb_description.Text = dg_listProduct.SelectedRows[0].Cells[2].Value.ToString();
- tb_fulldescription.Text = dg_listProduct.SelectedRows[0].Cells[3].Value.ToString();
- tb_price.Text = dg_listProduct.SelectedRows[0].Cells[4].Value.ToString();
- }
- catch
- {
- //MessageBox.Show("Невозможно сохранить XML файл.", "Ошибка.");
- toolStripStatusLabel1.Text = "Ошибка. - Невозможно открыть XML файл.";
- }
- }
- private void btn_uploadToFtp_Click(object sender, EventArgs e)
- {
- }
- }
- }
Решение задачи: «.NET 4.x Добавление данных в XML не верно»
textual
Листинг программы
- void Main()
- {
- var set = new DataSet();
- set.ReadXml(new XmlTextReader(new StringReader(db)));
- set.WriteXml(new MyXml(Console.Out));
- }
- string db = @"<?xml version=""1.0"" standalone=""yes""?>
- <comp_it_xml>
- <entry icon=""matt.png"" title=""Test 3"" description=""dfgdg dfz gfdz dg"" fulldescription="" fdgr dfgghghgfhdg h dfg fgs fgs fgs fgs f "" price=""130"" />
- <entry icon=""matt.png"" title=""Test 3"" description=""dfgdg dfz gfdz dg"" fulldescription="" fdgr dfgghghgfhdg h dfg fgs fgs fgs fgs f "" price=""130"" />
- <entry icon=""matt.png"" title=""Test 3"" description=""ggjyjg fhh"" fulldescription="" fdgr dfgghghgfhdg h dfg fgs fgs fgs fgs f "" price=""132"" />
- </comp_it_xml>
- ";
- class MyXml : XmlTextWriter
- {
- TextWriter writer;
- public MyXml(TextWriter writer):
- base(writer)
- {
- this.writer = writer;
- }
- public override void WriteStartAttribute(string prefix, string localName, string ns)
- {
- writer.Write("\n");
- base.WriteStartAttribute(prefix, localName, ns);
- }
- public override void WriteStartElement(string prefix, string localName, string ns)
- {
- writer.Write("\n");
- base.WriteStartElement(prefix, localName, ns);
- }
- public override void WriteEndElement()
- {
- writer.Write("\n");
- base.WriteEndElement();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д