XML в С# Урок 1. Запись в XML файл

.NET XML   11 июля 2012  Автор статьи:  

В данном уроке я расскажу начальные сведения о формате XML и научу последовательно писать в файл данного формата. Для работы с XML файлом необходимо знать основные принципы составления XML. XML файл можно представить как некоторое дерево, где у каждого элемента есть свой предок. Данный формат очень похож на своего прародителя HTML, в нем действуют такие же принципы, но есть более жесткие ограничение, которые помогли ему стать более простым форматом для передачи данных, чем его предшественники. Например, при сравнении тегов учитывается их регистр, каждый открывающий тег должен иметь закрывающийся и многое другое. Для получения более глубоких знаний по спецификации формата прочитайте статью в разделе термины, так как я буду рассказывать только те вещи, которые необходимы для написания корректного кода.
Рассматривая структуру документа как дерево, мы видим, что «корнем» является:



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

Alex

Сложный элемент:


Alex


У сложных элементов также могут быть атрибуты, который можно добавить внутрь тега, как и в html:

Alex

Научимся делать это в С#. Для этого составим следующий простой XML документ:




1500

Alex



Для реализации последовательной записи в XML файл будем использовать класс XmlTextWriter. Данный класс имеет множество полезных функций для записи в XML файл. Реализация приведенного выше XML файла осуществляется очень просто: достаточно идти сверху вниз и вызывать соответствующие функции. Если вы видим открывающийся тег, то мы вызываем функции которые начинаются со слов WriteStart, если хотим закрыть текущий тег, то вызываем WriteEndElement(). Для добавления текущему (открытому тегу) элементу атрибута можно использовать функцию writer.WriteAttributeString(«Название атрибута», «Значение атрибута»). Рассмотрим весь код в целом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XMLPresentation
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\LordRP\Desktop\1.xml";//путь до файла
XmlTextWriter writer = new XmlTextWriter(path, null);//Cоздание writer
writer.Formatting = Formatting.Indented;//использовать форматирование
writer.Indentation = 2;//количество пробелов в файле
writer.WriteStartDocument();//записывает заголовок
writer.WriteComment("Это комментарий");
writer.WriteStartElement("university");
writer.WriteAttributeString("ID", "64");//добавляем атрибут к текущему элементу
writer.WriteAttributeString("Name", "SSU");
writer.WriteElementString("StudentCount", "1500");//простой элемент
writer.WriteStartElement("department");
writer.WriteAttributeString("Name", "CSIT");
writer.WriteElementString("Student", "Alex");//простой элемент
writer.WriteEndElement();//закрываем тег department
writer.WriteEndElement();//закрываем тег university
writer.WriteEndDocument();//закрывает все теги, если такие остались
writer.Close();
}
}
}


  • Шончалай

    Спасибо Вам большое!!! Мне этот материал был очень нужен. Вы там так хорошо разъяснили, что мне этот урок очень погнравился. У меня просто слов нет!!! Просто спасибо большое!!!
    С Уважением студент!!!!

    • Единственное, что я тебе советую все таки дочитать до XDocument, так как он работает на LINQ и круче всех остальных.

Научиться программировать

  • на Delphi

  • на Java

  • на C++