создание XML файла с помощью кода

В данном примере, мы должны написать программу, которая будет создавать XML файл, записывать в него данные и затем выводить эти данные на консоль.
Ниже приведен образец XML файла, который должна создавать наша программа.
  • <?xml version="1.0" encoding="utf-8"?>
  • <!--база данных-->
  • <database name="abc">
  •   <!--описание структуры таблицы-->
  •   <table_structure name="books">
  •     <field Field="id" type="uint" />
  •     <field Field="name" type="string" />
  •     <field Field="amount" type="int" />
  •     <field Field="price" type="decimal" />
  •   </table_structure>
  •   <!--данные таблицы-->
  •   <table_data name="books">
  •     <row>
  •       <field name="id">1</field>
  •       <field name="name">Азбука</field>
  •       <field name="amount">10</field>
  •       <field name="price">5,25</field>
  •     </row>
  •     <row>
  •       <field name="id">2</field>
  •       <field name="name">Букварь</field>
  •       <field name="amount">20</field>
  •       <field name="price">3,15</field>
  •     </row>
  •     <row>
  •       <field name="id">3</field>
  •       <field name="name">Математика</field>
  •       <field name="amount">30</field>
  •       <field name="price">6,55</field>
  •     </row>
  •   </table_data>
  • </database>
Для удобства, составляем схему объектов, соответствующих расположению элементов.
  • XmlDoc
  •  ElementDatabase
  •   Comment1
  •   ElementTable_Structure
  •    ElementField0
  •    ElementField1
  •    ElementField2
  •    ElementField3
  •   Comment2
  •   ElementTable_Data
  •    ElementRow
  •     ElementFieldId
  •     ElementFieldName
  •     ElementFieldAmount
  •     ElementFieldPrice
Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • //добавить ссылку System.Xml
  • //подключить пространство имен
  • using System.Xml;
  •  
  • class Program {
  •  public static int Main() {
  •  
  •   //путь
  •   string path = @"a.xml";
  •  
  •   //создание главного объекта документа
  •   XmlDocument XmlDoc = new XmlDocument();
  •  
  •   /*<?xml version="1.0" encoding="utf-8" ?> */
  •   //создание объявления (декларации) документа
  •   XmlDeclaration XmlDec = XmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
  •   //добавляем в документ
  •   XmlDoc.AppendChild(XmlDec);
  •  
  •   /*<!--база данных-->*/
  •   //комментарий уровня root
  •   XmlComment Comment0 = XmlDoc.CreateComment("база данных");
  •   //добавляем в документ
  •   XmlDoc.AppendChild(Comment0);
  •  
  •   /*<database name="abc"></database>*/
  •   //создание корневого элемента
  •   XmlElement ElementDatabase = XmlDoc.CreateElement("database");
  •   //создание атрибута
  •   ElementDatabase.SetAttribute("name", "abc");
  •   //добавляем в документ
  •   XmlDoc.AppendChild(ElementDatabase);
  •  
  •   /*<!--описание структуры таблицы-->*/
  •   //комментарий уровня вложенности root/child
  •   XmlComment Comment1 = XmlDoc.CreateComment("описание структуры таблицы");
  •   //добавляем в ElementDatabase
  •   ElementDatabase.AppendChild(Comment1);
  •  
  •   /*<table_structure name="books"></table_structure>*/
  •   //создание дочернего элемента уровня вложенности root/child
  •   XmlElement ElementTable_Structure = XmlDoc.CreateElement("table_structure");
  •   //создание атрибута
  •   ElementTable_Structure.SetAttribute("name", "books");
  •   //добавляем в ElementDatabase
  •   ElementDatabase.AppendChild(ElementTable_Structure);
  •  
  •   /*<field Field="id" type="uint"></field>*/
  •   //создание дочернего элемента уровня вложенности root/child/child
  •   XmlElement ElementField0 = XmlDoc.CreateElement("field");
  •   //создание атрибута
  •   ElementField0.SetAttribute("Field""id");
  •   ElementField0.SetAttribute("type", "uint");
  •   //добавляем в ElementTable_Structure
  •   ElementTable_Structure.AppendChild(ElementField0);
  •  
  •   /*<field Field="name" type="string"></field>*/
  •   //создание дочернего элемента уровня вложенности root/child/child
  •   XmlElement ElementField1 = XmlDoc.CreateElement("field");
  •   //создание атрибута
  •   ElementField1.SetAttribute("Field", "name");
  •   ElementField1.SetAttribute("type", "string");
  •   //добавляем в ElementTable_Structure
  •   ElementTable_Structure.AppendChild(ElementField1);
  •  
  •   /*<field Field="amount" type="int"></field>*/
  •   //создание дочернего элемента уровня вложенности root/child/child
  •   XmlElement ElementField2 = XmlDoc.CreateElement("field");
  •   //создание атрибута
  •   ElementField2.SetAttribute("Field", "amount");
  •   ElementField2.SetAttribute("type", "int");
  •   //добавляем в ElementTable_Structure
  •   ElementTable_Structure.AppendChild(ElementField2);
  •  
  •   /*<field Field="price" type="decimal"></field>*/
  •   //создание дочернего элемента уровня вложенности root/child/child
  •   XmlElement ElementField3 = XmlDoc.CreateElement("field");
  •   //создание атрибута
  •   ElementField3.SetAttribute("Field", "price");
  •   ElementField3.SetAttribute("type", "decimal");
  •   //добавляем в ElementTable_Structure
  •   ElementTable_Structure.AppendChild(ElementField3);
  •  
  •   /*<!--данные таблицы-->*/
  •   //комментарий уровня вложенности root/child
  •   XmlComment Comment2 = XmlDoc.CreateComment("данные таблицы");
  •   //добавляем в ElementDatabase
  •   ElementDatabase.AppendChild(Comment2);
  •  
  •   /*<table_data name="books"></table_data>*/
  •   //создание дочернего элемента уровня вложенности root/child
  •   XmlElement ElementTable_Data = XmlDoc.CreateElement("table_data");
  •   //создание атрибута
  •   ElementTable_Data.SetAttribute("name", "books");
  •   //добавляем в ElementDatabase
  •   ElementDatabase.AppendChild(ElementTable_Data);
  •  
  •   /*добавление с помощью цикла*/
  •   uint counter = 0;
  •   //string str = "д";
  •   string word = "Введите ";
  •   for(;;) {
  •    //counter++;
  •    string id = Convert.ToString(++counter);
  •    Console.Write("{0} название   : ", word);
  •    string name = Console.ReadLine();
  •    Console.Write("{0} количество : ", word);
  •    string amount = Console.ReadLine();
  •    Console.Write("{0} цену       : ", word);
  •    string price = Console.ReadLine();
  •    Console.Write(@"Для продолжения нажмите букву 'д' для выхода любую другую : ");
  •    string str = Console.ReadLine();
  •  
  •    /*<row><row>*/
  •    //создание дочернего элемента уровня вложенности root/child/child
  •    XmlElement ElementRow = XmlDoc.CreateElement("row");
  •    //добавляем в ElementTable_Data
  •    ElementTable_Data.AppendChild(ElementRow);
  •  
  •    /*<field name="id"></field>*/
  •    //создание дочернего элемента уровня вложенности root/child/child/child
  •    XmlElement ElementFieldId = XmlDoc.CreateElement("field");
  •    //создание атрибута
  •    ElementFieldId.SetAttribute("name", "id");
  •    //создание контента
  •    ElementFieldId.InnerText = id;
  •    //добавляем в ElementRow
  •    ElementRow.AppendChild(ElementFieldId);
  •  
  •    /*<field name="name"></field>*/
  •    //создание дочернего элемента уровня вложенности root/child/child/child
  •    XmlElement ElementFieldName = XmlDoc.CreateElement("field");
  •    //создание атрибута
  •    ElementFieldName.SetAttribute("name", "name");
  •    //создание контента
  •    ElementFieldName.InnerText = name;
  •    //добавляем в ElementRow
  •    ElementRow.AppendChild(ElementFieldName);
  •  
  •    /*<field name="amount"></field>*/
  •    //создание дочернего элемента уровня вложенности root/child/child/child
  •    XmlElement ElementFieldAmount = XmlDoc.CreateElement("field");
  •    //создание атрибута
  •    ElementFieldAmount.SetAttribute("name", "amount");
  •    //создание контента
  •    ElementFieldAmount.InnerText = amount;
  •    //добавляем в ElementRow
  •    ElementRow.AppendChild(ElementFieldAmount);
  •  
  •    /*<field name="price"></field>*/
  •    //создание дочернего элемента уровня вложенности root/child/child/child
  •    XmlElement ElementFieldPrice = XmlDoc.CreateElement("field");
  •    //создание атрибута
  •    ElementFieldPrice.SetAttribute("name", "price");
  •    //создание контента
  •    ElementFieldPrice.InnerText = price;
  •    //добавляем в ElementRow
  •    ElementRow.AppendChild(ElementFieldPrice);
  •  
  •    //для выхода из бесконечного цикла
  •    if(str == "д") {
  •     break;
  •    }
  •   }
  •  
  •   //сохраняем в документ
  •   XmlDoc.Save(path);
  •  
  •   /*считывание информации из файла и вывод на консоль*/
  •  
  •   //загружаем XML документ
  •   XmlDoc.Load(path);
  •  
  •   //получаем все дочерние элементы корневого элемента
  •   //xmlDoc.DocumentElement - корневой элемент
  •   foreach(XmlNode i in XmlDoc.DocumentElement.ChildNodes) {
  •    foreach(XmlNode j in i.ChildNodes) {
  •     Console.WriteLine("{0}", j.InnerText);
  •    }
  •   }
  •  
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
Введите название   : Азбука
Введите количество : 10
Введите цену       : 5,25
Для продолжения нажмите букву 'д' для выхода любую другую : 0
Введите название   : Букварь
Введите количество : 20
Введите цену       : 3,15
Для продолжения нажмите букву 'д' для выхода любую другую : 0
Введите название   : Математика
Введите количество : 30
Введите цену       : 6,55
Для продолжения нажмите букву 'д' для выхода любую другую : д



1Азбука105,25
2Букварь203,15
3Математика306,55
А вот созданный XML файл, который находится в bin\Debug.
Скрыть

Показать

Копировать
  bin\Debug\a.xml  
  • <?xml version="1.0" encoding="utf-8"?>
  • <!--база данных-->
  • <database name="abc">
  •   <!--описание структуры таблицы-->
  •   <table_structure name="books">
  •     <field Field="id" type="uint" />
  •     <field Field="name" type="string" />
  •     <field Field="amount" type="int" />
  •     <field Field="price" type="decimal" />
  •   </table_structure>
  •   <!--данные таблицы-->
  •   <table_data name="books">
  •     <row>
  •       <field name="id">1</field>
  •       <field name="name">Азбука</field>
  •       <field name="amount">10</field>
  •       <field name="price">5,25</field>
  •     </row>
  •     <row>
  •       <field name="id">2</field>
  •       <field name="name">Букварь</field>
  •       <field name="amount">20</field>
  •       <field name="price">3,15</field>
  •     </row>
  •     <row>
  •       <field name="id">3</field>
  •       <field name="name">Математика</field>
  •       <field name="amount">30</field>
  •       <field name="price">6,55</field>
  •     </row>
  •   </table_data>
  • </database>