


Привет, Хабр!
Это моя первая статья тут, и я очень постараюсь оформить её достойно и принести пользу Хабр-сообществу!
Краткое введение
XML — язык разметки текста, крайне напоминающий HTML. НО! Его чаще используют как формат хранения данных. Проще говоря — БД. Он очень удобен, почти во всех библиотеках нашего времени можно найти классы/функции для работы с ним
В первой части я расскажу о том, как создавать XML документ и записывать в него данные, во второй же, как считывать и редактировать их. И всё это, при помощи языка C# и классов, присущих .NET.
Данные статьи будут скорее заметками, ибо в XML данные хранить и отображать намного удобнее, чем просто в текстовом файле.
Это не копипаст данного топика, там учат комментировать код на C# при помощи XML.
Реализация
В .NET существует изобилие классов для работы с XML, но не каждый из них является удобным.
1. Создаём файл
using System.Xml;
Это первое, что мы должны сделать: подключить классы для работы с XML.Любой XML документ выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?><br><head><br> <element number="1"><br> <subElement1>Hello</subElement1><br> <subElement2>Dear </subElement2><br> <subElement3>Habr!</subElement3><br> </element><br> <element number="2"><br> <subElement1>Hello</subElement1><br> <subElement2>Dear </subElement2><br> <subElement3>User!</subElement3><br> </element><br></head> <br></source><br><br>* This source code was highlighted with Source Code Highlighter.
Мы должны сгенерировать тоже самое, только со своими данными при помощи C# кода. Начнём с заголовка, который есть в любом XML-документе:
<?xml version="1.0" encoding="utf-8"?>
Из множества классов мы выбираем класс
XmlTextWriter
Создаём сам XML-файл:
XmlTextWriter textWritter = new XmlTextWriter(pathToXml, Encoding.UTF8);
Создаём в файле заголовок XML-документа:
textWritter.WriteStartDocument();
Создём голову (head):
textWritter.WriteStartElement("head");
Закрываем её:
textWritter.WriteEndElement();
И закрываем наш XmlTextWriter:
textWritter.Close();
Получили:
<?xml version="1.0" encoding="utf-8"?>
<head>
</head>
Теперь у нас есть XML-файл, но, пока без данных.
2. Заносим данные
Для занесения данных мы будем использовать класс XmlDocument:
XmlDocument document = new XmlDocument();
Загружаем наш файл:
document.Load(pathToXml);
Создаём XML-запись:
XmlNode element = document.CreateElement("element");
document.DocumentElement.AppendChild(element); // указываем родителя
XmlAttribute attribute = document.CreateAttribute("number"); // создаём атрибут
attribute.Value = 1; // устанавливаем значение атрибута
element.Attributes.Append(attribute); // добавляем атрибут
Добавляем в запись данные:
XmlNode subElement1 = document.CreateElement("subElement1"); // даём имя
subElement1.InnerText = "Hello"; // и значение
element.AppendChild(subElement1); // и указываем кому принадлежит
Ещё добавляем:
XmlNode subElement2 = document.CreateElement("subElement2");
subElement2.InnerText = "Dear";
element.AppendChild(subElement2);
XmlNode subElement3 = document.CreateElement("subElement3");
subElement3.InnerText = "Habr";
element.AppendChild(subElement3);
И, самое главное, не забываем сохранить:
document.Save(pathToXml);
Результат
Получили:
<?xml version="1.0" encoding="utf-8"?><br><head><br> <element number="1"><br> <subElement1>Hello</subElement1><br> <subElement2>Dear</subElement2><br> <subElement3>Habr</subElement3><br> </element><br></head><br><br>* This source code was highlighted with Source Code Highlighter.
Исходная функция.