Что такое XML?

«Что такое XML?» — вопрос из категории Сети, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

XML (eXtensible Markup Language) — это строгий текстовый формат разметки для хранения и передачи структурированных данных. Он определяет набор правил для кодирования документов в формате, который одновременно читаем человеком и машиной.

Основные характеристики:

  • Самодокументируемость: структура данных описывается тегами и атрибутами.
  • Строгий синтаксис: требует корректной вложенности, закрывающих тегов и может быть проверен на соответствие схеме (XSD/DTD).
  • Платформо- и языконезависимость.
  • Поддержка пространств имен (namespaces) для избежания конфликтов имен тегов.

Области применения: конфигурационные файлы (например, .csproj), веб-сервисы (SOAP), обмен данными между разнородными системами, документы офисных пакетов (DOCX, XLSX).

Пример XML-документа:

<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns="http://example.org/books">
  <book id="bk101">
    <author>Гамма, Эрих</author>
    <title>Приемы объектно-ориентированного проектирования. Паттерны проектирования</title>
    <genre>Компьютерная литература</genre>
    <price>44.95</price>
    <publish_date>1994-10-01</publish_date>
  </book>
</catalog>

Работа с XML в C#: В .NET доступно несколько API, выбор зависит от задачи:

  1. LINQ to XML (XDocument, XElement) — современный и рекомендуемый подход:

    // Чтение
    XDocument doc = XDocument.Load("books.xml");
    var titles = doc.Descendants("title")
                    .Select(e => e.Value)
                    .ToList();
    
    // Создание
    XElement newBook = new XElement("book",
        new XAttribute("id", "bk102"),
        new XElement("title", "CLR via C#")
    );
  2. XmlDocument (DOM-модель): Загружает весь документ в память, удобна для навигации и редактирования.
  3. XmlReader / XmlWriter: Потоковое чтение и запись с минимальным потреблением памяти, идеально для больших файлов.