В данном примере, мы должны написать программу, которая будет создавать XML файл, записывать в него данные и затем выводить эти данные на консоль.
Ниже приведен образец XML файла, который должна создавать наша программа.
Ниже приведен образец XML файла, который должна создавать наша программа.
<?xmlversion="1.0"encoding="utf-8"?><!--база данных--><databasename="abc">-
<!--описание структуры таблицы--> -
<table_structurename="books"> -
<fieldField="id"type="uint"/> -
<fieldField="name"type="string"/> -
<fieldField="amount"type="int"/> -
<fieldField="price"type="decimal"/> -
</table_structure> -
<!--данные таблицы--> -
<table_dataname="books"> -
<row> -
<fieldname="id">1</field> -
<fieldname="name">Азбука</field> -
<fieldname="amount">10</field> -
<fieldname="price">5,25</field> -
</row> -
<row> -
<fieldname="id">2</field> -
<fieldname="name">Букварь</field> -
<fieldname="amount">20</field> -
<fieldname="price">3,15</field> -
</row> -
<row> -
<fieldname="id">3</field> -
<fieldname="name">Математика</field> -
<fieldname="amount">30</field> -
<fieldname="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
usingSystem;//добавить ссылку System.Xml//подключить пространство именusingSystem.Xml;classProgram {-
publicstaticintMain() { -
//путь -
stringpath =@"a.xml"; -
//создание главного объекта документа -
XmlDocument XmlDoc =newXmlDocument(); -
/*<?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); -
/*добавление с помощью цикла*/ -
uintcounter = 0; -
//string str = "д"; -
stringword ="Введите "; -
for(;;) { -
//counter++; -
stringid = Convert.ToString(++counter); -
Console.Write("{0} название : ", word); -
stringname = Console.ReadLine(); -
Console.Write("{0} количество : ", word); -
stringamount = Console.ReadLine(); -
Console.Write("{0} цену : ", word); -
stringprice = Console.ReadLine(); -
Console.Write(@"Для продолжения нажмите букву 'д' для выхода любую другую : "); -
stringstr = 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 iinXmlDoc.DocumentElement.ChildNodes) { -
foreach(XmlNode jini.ChildNodes) { -
Console.WriteLine("{0}", j.InnerText); -
} -
} -
Console.ReadKey(); -
return0; -
} }
usingSystem;//добавить ссылку System.Xml//подключить пространство именusingSystem.Xml;classProgram {-
publicstaticintMain() { -
//путь -
stringpath =@"a.xml"; -
//создание главного объекта документа -
XmlDocument XmlDoc =newXmlDocument(); -
/*<?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); -
/*добавление с помощью цикла*/ -
uintcounter = 0; -
//string str = "д"; -
stringword ="Введите "; -
for(;;) { -
//counter++; -
stringid = Convert.ToString(++counter); -
Console.Write("{0} название : ", word); -
stringname = Console.ReadLine(); -
Console.Write("{0} количество : ", word); -
stringamount = Console.ReadLine(); -
Console.Write("{0} цену : ", word); -
stringprice = Console.ReadLine(); -
Console.Write(@"Для продолжения нажмите букву 'д' для выхода любую другую : "); -
stringstr = 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 iinXmlDoc.DocumentElement.ChildNodes) { -
foreach(XmlNode jini.ChildNodes) { -
Console.WriteLine("{0}", j.InnerText); -
} -
} -
Console.ReadKey(); -
return0; -
} }
Введите название : Азбука
Введите количество : 10
Введите цену : 5,25
Для продолжения нажмите букву 'д' для выхода любую другую : 0
Введите название : Букварь
Введите количество : 20
Введите цену : 3,15
Для продолжения нажмите букву 'д' для выхода любую другую : 0
Введите название : Математика
Введите количество : 30
Введите цену : 6,55
Для продолжения нажмите букву 'д' для выхода любую другую : д
1Азбука105,25
2Букварь203,15
3Математика306,55
Введите количество : 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
<?xmlversion="1.0"encoding="utf-8"?><!--база данных--><databasename="abc">-
<!--описание структуры таблицы--> -
<table_structurename="books"> -
<fieldField="id"type="uint"/> -
<fieldField="name"type="string"/> -
<fieldField="amount"type="int"/> -
<fieldField="price"type="decimal"/> -
</table_structure> -
<!--данные таблицы--> -
<table_dataname="books"> -
<row> -
<fieldname="id">1</field> -
<fieldname="name">Азбука</field> -
<fieldname="amount">10</field> -
<fieldname="price">5,25</field> -
</row> -
<row> -
<fieldname="id">2</field> -
<fieldname="name">Букварь</field> -
<fieldname="amount">20</field> -
<fieldname="price">3,15</field> -
</row> -
<row> -
<fieldname="id">3</field> -
<fieldname="name">Математика</field> -
<fieldname="amount">30</field> -
<fieldname="price">6,55</field> -
</row> -
</table_data> </database>
<?xmlversion="1.0"encoding="utf-8"?><!--база данных--><databasename="abc">-
<!--описание структуры таблицы--> -
<table_structurename="books"> -
<fieldField="id"type="uint"/> -
<fieldField="name"type="string"/> -
<fieldField="amount"type="int"/> -
<fieldField="price"type="decimal"/> -
</table_structure> -
<!--данные таблицы--> -
<table_dataname="books"> -
<row> -
<fieldname="id">1</field> -
<fieldname="name">Азбука</field> -
<fieldname="amount">10</field> -
<fieldname="price">5,25</field> -
</row> -
<row> -
<fieldname="id">2</field> -
<fieldname="name">Букварь</field> -
<fieldname="amount">20</field> -
<fieldname="price">3,15</field> -
</row> -
<row> -
<fieldname="id">3</field> -
<fieldname="name">Математика</field> -
<fieldname="amount">30</field> -
<fieldname="price">6,55</field> -
</row> -
</table_data> </database>