C# и XML Часть 1

17 Май
2012

C#plusXML

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

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


XML — язык разметки текста, крайне напоминающий HTML. НО! Его чаще используют как формат хранения данных. Проще говоря — БД. Он очень удобен, почти во всех библиотеках нашего времени можно найти классы/функции для работы с ним

В первой части я расскажу о том, как создавать XML документ и записывать в него данные, во второй же, как считывать и редактировать их. И всё это, при помощи языка C# и классов, присущих .NET.

Данные статьи будут скорее заметками, ибо в XML данные хранить и отображать намного удобнее, чем просто в текстовом файле.

Это не копипаст данного топика, там учат комментировать код на C# при помощи XML.

Реализация


В .NET существует изобилие классов для работы с XML, но не каждый из них является удобным.

1. Создаём файл
using System.Xml;
Это первое, что мы должны сделать: подключить классы для работы с XML.

Любой XML документ выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?>
<head>
<element number="1">
<subElement1>Hello</subElement1>
<subElement2>Dear </subElement2>
<subElement3>Habr!</subElement3>
</element>
<element number="2">
<subElement1>Hello</subElement1>
<subElement2>Dear </subElement2>
<subElement3>User!</subElement3>
</element>
</head>
</source>


* 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"?>
<head>
<element number="1">
<subElement1>Hello</subElement1>
<subElement2>Dear</subElement2>
<subElement3>Habr</subElement3>
</element>
</head>


* This source code was highlighted with Source Code Highlighter.




Исходная функция.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх