Pull to refresh

C# и XML Часть 1

C# plus XML

Привет, Хабр!
Это моя первая статья тут, и я очень постараюсь оформить её достойно и принести пользу Хабр-сообществу!

Краткое введение


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.



Исходная
функция.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.