XML: что это, структура документа и принцип работы

Автор: IT Sectr Опубликовано: 2026-03-08 Время чтения: 8 мин

XML (eXtensible Markup Language) — это текстовый формат для хранения и передачи структурированных данных с использованием пользовательских тегов. Он широко применяется в конфигурационных файлах, веб-сервисах и Android-разработке. По данным консорциума W3C, спецификация XML остаётся стабильным стандартом с 2008 года. XML обеспечивает строгую структуру данных с возможностью валидации через схемы.

Главное

  • XML — расширяемый язык разметки с пользовательскими тегами для структурированных данных
  • Строгая структура — обязательные закрывающие теги, корневой элемент и валидация через XSD
  • Пространства имён — механизм для избежания конфликтов имён в одном документе
  • XSLT — трансформация XML в другие форматы: HTML, PDF, CSV
  • Android-разработка — XML используется для layouts, манифеста и ресурсов

Что такое XML?

XML — это язык разметки, который определяет набор правил для кодирования документов в формате, читаемом как человеком, так и машиной. В отличие от HTML, XML не имеет фиксированного набора тегов — разработчик создаёт собственные теги, соответствующие структуре данных.

XML был разработан консорциумом W3C в 1996 году как упрощённый подмножество SGML (Standard Generalized Markup Language). Основная цель XML — разделение содержания и представления данных. В отличие от HTML, который описывает внешний вид, XML описывает структуру и смысл данных.

Ключевое свойство XML — расширяемость. Если в проекте появляются новые типы данных, разработчик просто добавляет новые теги без изменения существующей структуры. Это делает XML удобным для долгосрочного хранения данных и обмена между разными системами.

Основные области применения XML

  • Android-разработка — layout-файлы, манифест, ресурсы (strings, colors, themes)
  • Конфигурация — Maven POM, Ant build, веб-конфиги (web.xml)
  • Веб-сервисы — SOAP, XML-RPC, RSS/Atom ленты
  • Документооборот — SVG, DocBook, Office Open XML
  • Базы данных — SQL Server (XML type), Oracle, PostgreSQL

Синтаксис и структура XML

Синтаксис XML строже, чем у HTML. Каждый открывающий тег должен иметь соответствующий закрывающий, атрибуты заключаются в кавычки, имена тегов чувствительны к регистру. Документ должен иметь ровно один корневой элемент, содержащий все остальные.

XML-документ может начинаться с декларации, указывающей версию XML и кодировку. Затем следует корневой элемент, внутри которого могут быть вложенные элементы, атрибуты, текстовое содержимое и комментарии. Пустые элементы записываются как .

xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <book id="bk001">
        <title>XML Developer Guide</title>
        <author>John Smith</author>
        <price currency="USD">29.99</price>
        <published>2026-03-15</published>
    </book>
    <book id="bk002">
        <title>Advanced XML Schemas</title>
        <author>Jane Doe</author>
        <price currency="USD">49.99</price>
        </book>
</catalog>

Правила хорошо сформированного XML

Well-formed XML должен соблюдать базовые правила: закрывающие теги обязательны для каждого открывающего, вложенность строгая (пересечение тегов запрещено), значения атрибутов всегда в кавычках. Нарушение любого правила делает документ некорректным и не подлежит парсингу.

  1. Один корневой элемент — документ содержит ровно один корень
  2. Корректная вложенность — теги не должны пересекаться
  3. Закрывающие теги — обязательны для всех элементов, кроме самозакрывающихся
  4. Регистрозависимость — <Book> и <book> — разные элементы
  5. Кавычки в атрибутах — значения атрибутов в двойных или одинарных кавычках

Пространства имён и схемы XML

Пространства имён XML (XML Namespaces) решают проблему конфликта имён, когда в одном документе используются элементы из разных словарей. Пространство имён задаётся атрибутом xmlns с URI, который однозначно идентифицирует словарь.

XML Schema (XSD) — это язык описания структуры XML-документа. XSD определяет, какие элементы и атрибуты допустимы, их типы данных, обязательность и ограничения. Схемы позволяют автоматически валидировать документ перед обработкой, что критически важно для интеграционных решений.

Технология Назначение Пример
DTD Базовая валидация структуры Старая, меньше возможностей
XSD Строгая типизация и валидация Стандарт для индустрии
RELAX NG Компактная альтернатива XSD Проще и читаемее XSD
XSLT Трансформация XML в другие форматы XML в HTML, PDF, CSV
XPath Навигация и выборка узлов Запросы к XML-дереву

XML в мобильной разработке

XML играет ключевую роль в Android-разработке. Операционная система Android использует XML для описания пользовательского интерфейса (layout-файлы), конфигурации приложения (AndroidManifest.xml), ресурсов (строки, цвета, темы) и векторной графики (VectorDrawable). На iOS XML применяется реже, в основном для Storyboard и конфигурационных plist-файлов.

В Android каждый экран приложения описывается XML-файлом с иерархией View-компонентов: ConstraintLayout, LinearLayout, TextView, Button. Этот подход разделяет логику приложения и представление, упрощая поддержку и адаптацию под разные экраны. Ресурсные XML-файлы позволяют локализовать приложение без изменения кода.

Пример Android layout

Типичный layout-файл содержит корневой ConstraintLayout с вложенными элементами, каждый из которых имеет атрибуты расположения, размера и стиля. Android компилирует XML в бинарный формат AXML для оптимизации производительности при запуске.

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Парсинг XML на мобильных платформах

Парсинг XML на мобильных платформах выполняется двумя основными подходами: DOM (Document Object Model) загружает весь документ в память как дерево, SAX (Simple API for XML) читает документ потоково, вызывая обработчики событий. DOM удобен для небольших документов, SAX — для больших файлов с ограничениями по памяти.

На Android доступны встроенные парсеры: XmlPullParser для потокового разбора и DocumentBuilder для DOM-подхода. На iOS используется Foundation XMLParser с делегатным протоколом. Для сериализации объектов в XML часто применяются библиотеки вроде SimpleXML на PHP или Jackson XML на Java.

Парсинг XML на Android (Kotlin)

В Android рекомендуется использовать XmlPullParser для эффективного разбора XML. Парсер работает в событийном режиме: вызывает next() для перемещения к следующему элементу и возвращает тип события (START_TAG, TEXT, END_TAG). Это позволяет обрабатывать документы любого размера с минимальным потреблением памяти.

kotlin
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException

fun parseCatalog(parser: XmlPullParser): List<Book> {
    val books = mutableListOf<Book>()
    var eventType = parser.getEventType()
    var currentBook: Book? = null

    while (eventType != XmlPullParser.END_DOCUMENT) {
        when (eventType) {
            XmlPullParser.START_TAG -> {
                when (parser.getName()) {
                    "book" -> currentBook = Book()
                    "title" -> parser.next()
                    "author" -> parser.next()
                }
            }
            XmlPullParser.TEXT -> {
                currentBook?.apply {
                    title = parser.getText() ?: ""
                }
            }
            XmlPullParser.END_TAG -> {
                if (parser.getName() == "book") {
                    currentBook?.let { books.add(it) }
                }
            }
        }
        eventType = parser.next()
    }
    return books
}

Примеры XML в приложениях

Примеры использования XML показывают его роль в реальных проектах. Помимо Android-разработки, XML применяется для конфигурации сборки, описания данных и документооборота. Понимание синтаксиса XML необходимо для работы с Maven, SOAP-сервисами и многими enterprise-инструментами.

Конфигурация Maven (POM)

Файл pom.xml описывает проект Maven: зависимости, плагины, версии и профили сборки. Каждая зависимость задаётся тегами groupId, artifactId и version. Maven автоматически загружает указанные библиотеки из репозиториев.

xml
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.9.0</version>
        </dependency>
    </dependencies>
</project>

XML vs JSON: когда что выбирать

Выбор между XML и JSON зависит от конкретных требований проекта. JSON подходит для REST API, мобильных приложений и конфигураций, где важны компактность и скорость. XML незаменим в Enterprise-системах, документообороте и Android-разработке, где нужны строгая валидация, пространства имён и трансформация данных.

XML выигрывает в сценариях с долгосрочным хранением документов. Благодаря XSD-схемам XML-документы можно валидировать автоматически, что критично для медицинских, финансовых и юридических систем. XSLT-преобразования позволяют генерировать HTML, PDF и другие форматы из одного XML-источника, что упрощает документооборот.

JSON, в свою очередь, стал стандартом для веб-API и мобильных приложений. Простота интеграции с JavaScript, меньший размер и высокая скорость парсинга делают JSON предпочтительным выбором для REST API, WebSocket-сообщений и конфигурационных файлов. Для большинства новых проектов рекомендуется начинать с JSON и переходить на XML только при появлении специфических требований.

Часто задаваемые вопросы

Чем XML отличается от HTML?

XML описывает структуру и содержание данных, HTML — внешний вид и представление. XML позволяет создавать любые теги, HTML имеет фиксированный набор. XML строже в синтаксисе: все теги обязаны закрываться, HTML допускает незакрытые теги. XML — для данных, HTML — для отображения.

Что такое XSD и зачем она нужна?

XSD (XML Schema Definition) — это язык описания структуры XML-документа. XSD определяет, какие элементы и атрибуты разрешены, их типы данных, обязательность и ограничения. Схема позволяет автоматически валидировать XML-документ до его обработки, предотвращая ошибки и гарантируя целостность данных.

Как парсить XML на Android?

На Android для парсинга XML используйте XmlPullParser — встроенный потоковый парсер. Он работает событийно: обрабатывает START_TAG, TEXT и END_TAG в цикле, управляя памятью эффективно. Для небольших документов подойдёт DOM-парсер через DocumentBuilderFactory, который загружает весь документ в память как дерево узлов.

В чём разница между DTD и XSD?

DTD (Document Type Definition) — старый механизм валидации с ограниченными возможностями: не поддерживает типы данных (всё — строки) и пространства имён. XSD — современная замена с поддержкой типов данных (числа, даты, перечисления), пространств имён и расширяемости. XSD сама является XML-документом, DTD использует свой синтаксис.

Зачем нужны пространства имён в XML?

Пространства имён предотвращают конфликты имён, когда XML-документ объединяет элементы из разных источников. Например, в Android layout тег View может быть как из android.view, так и из библиотеки. Атрибут xmlns с URI однозначно идентифицирует источник каждого элемента и атрибута.

Итоги

  • XML — расширяемый язык разметки с пользовательскими тегами для структурированных данных
  • Строгий синтаксис — обязательные закрывающие теги, корневой элемент, регистрозависимость
  • Пространства имён и схемы XSD обеспечивают валидацию и предотвращают конфликты имён
  • Android использует XML для интерфейсов, ресурсов и конфигурации приложения
  • Парсинг выполняется через XmlPullParser (потоковый) или DOM (в память)
  • XSLT позволяет трансформировать XML в HTML, PDF и другие форматы
  • Меньшая популярность в REST API уступает JSON, но XML незаменим в Enterprise и Android

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также