В данном примере, мы должны написать программу, которая будет создавать 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;
-
}
}
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
Введите количество : 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
>
<?
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
>