XML Форматировщик
Форматирование, минификация и валидация XML в браузере — без загрузки на сервер. Расставляет отступы, сообщает об ошибках правильно оформленности с указанием строки/столбца. Бесплатно, приватно, без регистрации.
Что такое XML-форматировщик и зачем он нужен?
XML (Extensible Markup Language, расширяемый язык разметки) — текстовый формат для структурированных данных, используемый повсеместно: от веб-сервисов и конфигурационных файлов до RSS-лент, SOAP API, офисных документов (DOCX, XLSX), SVG-графики и файлов компоновки Android. В отличие от JSON, XML поддерживает комментарии, пространства имён, смешанное содержимое (текст и элементы вперемешку) и объявления типа документа — что делает его предпочтительным форматом для корпоративной интеграции, обмена документами и везде, где структурированным данным необходимо сосуществовать с удобочитаемой разметкой.
XML в реальной жизни зачастую плохо оформлен или полностью минифицирован — ответы API приходят в одну строку, конфигурационные файлы накапливают непоследовательные отступы, а XML, сгенерированный сериализаторами, не содержит пробелов. XML-форматировщик принимает такой неряшливый ввод и расставляет в нём отступы для создания чистой иерархической структуры, где каждый уровень вложенности визуально очевиден. Это необходимо для проверки кода, отладки, документирования и понимания незнакомых XML-схем.
**Чем этот инструмент отличается от обычного текстового редактора:**
**1. Валидация правильной оформленности с точным указанием места ошибки.** Форматировщик использует DOMParser браузера (тот же движок, что парсит HTML и SVG) для разбора XML. Если документ не правильно оформлен — несовпадающие теги, незакрытые элементы, неэкранированные символы или несколько корневых элементов — парсер сообщает точную строку и столбец, где произошёл сбой. Это намного быстрее, чем читать необработанный XML в поисках случайно незакрытого тега.
**2. Безвредное форматирование.** Форматировщик в точности сохраняет комментарии, инструкции по обработке, секции CDATA, объявления пространств имён, порядок атрибутов и всё текстовое содержимое. Изменяются только пробельные символы между тегами элементов. Можно безопасно форматировать любой XML — ничего существенного не изменится.
**3. Минификация для продакшна.** Минификатор удаляет все незначимые межэлементные пробельные символы, создавая наименьшее допустимое XML-представление. Это правильный шаг предварительной обработки перед сохранением XML в столбец базы данных, вставкой его в виде строки в JSON или передачей по каналу с ограничением по байтам.
**4. 100% работа в браузере — полная конфиденциальность.** Медицинский XML (HL7, FHIR), финансовые данные, SOAP-полезные нагрузки с учётными данными и внутренние конфигурационные файлы — всё это обычные XML-полезные нагрузки, содержащие конфиденциальные данные. Этот инструмент ничего не загружает — вся обработка выполняется в JavaScript-движке вашего браузера. Смотрите наши сопутствующие инструменты, если вам нужно конвертировать, а не форматировать: Конвертер XML в JSON для преобразования XML в JSON и Конвертер JSON в XML для обратного преобразования.
<!-- Minified XML input -->
<?xml version="1.0" encoding="UTF-8"?><catalog><product id="p01"><name>Wireless Headphones</name><price currency="USD">79.99</price></product></catalog>
<!-- After formatting with 2-space indent -->
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<product id="p01">
<name>Wireless Headphones</name>
<price currency="USD">79.99</price>
</product>
</catalog> Ключевые возможности
Форматирование с отступом 2 или 4 пробела
Расставляет отступы в XML для создания чистой читаемой иерархии. Перед форматированием выберите отступ в 2 пробела (наиболее распространённый для веб-сервисов, RSS и конфигурационных файлов) или в 4 пробела (распространён в корпоративных XML-схемах).
Минификация — удаление незначимых пробелов
Удаляет все пробельные символы между тегами элементов без затрагивания текстового содержимого, создавая наименьший допустимый XML. Идеально для хранения, передачи или встраивания в виде строки внутри JSON или других форматов.
Валидация правильной оформленности с указанием строки/столбца ошибки
Использует встроенный DOMParser браузера для валидации структуры XML. Сообщает точный номер строки и столбца первой ошибки правильной оформленности — несовпадающие теги, незакрытые элементы, неэкранированные символы — для быстрой отладки.
Безвредное сохранение: комментарии, пространства имён и атрибуты
Комментарии, инструкции по обработке, секции CDATA, объявления пространств имён и порядок атрибутов сохраняются в точности. Изменяются только незначимые пробельные символы между тегами — содержимое никогда не изменяется.
100% работа в браузере — без загрузки и сервера
Вся обработка выполняется локально в вашем браузере. XML-полезные нагрузки, содержащие учётные данные, медицинские данные, финансовые записи или внутренние конфигурации, никогда не передаются на какой-либо сервер и не записываются.
Работает с SOAP, RSS, SVG, XHTML и Android XML
Обрабатывает любое правильно оформленное XML-приложение: SOAP-конверты с заголовками WS-Security, RSS/Atom-ленты, SVG-файлы, XHTML-документы, Android layout XML, Maven POM и сборочные файлы Maven/Ant.
Примеры
Сжатый / минифицированный XML
<?xml version="1.0" encoding="UTF-8"?><catalog><product id="p01" category="electronics"><name>Wireless Headphones</name><price currency="USD">79.99</price><stock>142</stock><tags><tag>audio</tag><tag>bluetooth</tag></tags></product><product id="p02" category="books"><name>Learning XML</name><price currency="USD">29.99</price><stock>55</stock></product></catalog>
Компактный однострочный каталог товаров в XML. Нажмите «Форматировать» для расстановки отступов и получения читаемого дерева с отступом в 2 пробела. Иерархия элементов, атрибуты и текстовое содержимое сохраняются в точности — форматирование носит исключительно косметический характер.
Фрагмент RSS-ленты
<rss version="2.0"><channel><title>Go Tools Blog</title><link>https://go-tools.org/blog</link><description>Developer tools, tips and tutorials</description><item><title>Understanding XML Namespaces</title><link>https://go-tools.org/blog/xml-namespaces-guide</link><pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate><description>A deep dive into XML namespace declarations, prefixes, and scope rules with practical examples.</description></item><item><title>XML vs JSON: When to Use Each</title><link>https://go-tools.org/blog/xml-vs-json</link><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item></channel></rss>
RSS 2.0-лента из двух элементов, сжатая в одну строку. После форматирования метаданные канала и каждый элемент отображаются с чёткими отступами, что упрощает проверку структуры ленты, добавление новых записей или сравнение с требованиями валидатора.
SOAP-конверт
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken><wsse:Username>api-client</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-ext-1.0.xsd#PasswordText">s3cr3t</wsse:Password></wsse:UsernameToken></wsse:Security></soap:Header><soap:Body><GetOrderRequest xmlns="http://example.com/orders"><OrderId>ORD-20260529-001</OrderId><IncludeLineItems>true</IncludeLineItems></GetOrderRequest></soap:Body></soap:Envelope>
SOAP 1.1-конверт с заголовком WS-Security и телом GetOrder с тремя префиксами пространств имён (soap:, wsse: и default). Форматирование немедленно проясняет разделение заголовка и тела, а также объявления пространств имён — это критично при отладке SOAP-интеграций и чтении полезных нагрузок, сгенерированных WSDL.
Как использовать
- 1
Вставьте ваш XML
Введите или вставьте XML в поле ввода выше. Также можно нажать «Загрузить пример», чтобы попробовать образец (минифицированный каталог товаров XML, который хорошо форматируется).
- 2
Выберите действие
Нажмите «Форматировать» для красивого вывода с отступами, «Минифицировать» для удаления пробелов или «Валидировать» для проверки правильной оформленности. Перед форматированием выберите размер отступа: 2 или 4 пробела.
- 3
Скопируйте результат
Обработанный XML появляется в панели вывода. Нажмите «Скопировать», чтобы поместить его в буфер обмена. Если валидация выявила ошибки, баннер ошибки показывает точный номер строки и столбца.
Типичные ошибки XML
Несовпадающие теги
Имена XML-тегов чувствительны к регистру и должны совпадать точно.
<products>
<Item>
<name>Widget</name>
</item>
</products> <products>
<item>
<name>Widget</name>
</item>
</products> Неэкранированный амперсанд или знак «меньше»
Символы & и < зарезервированы в XML и должны быть экранированы за пределами секций CDATA. Символ & без экранирования вызывает ошибку парсера даже в значениях атрибутов. Используйте & вместо & и < вместо <. Знак > следует экранировать как > в текстовом содержимом, хотя парсеры более снисходительны к этому.
<query>price > 10 & stock > 0</query>
<query>price > 10 & stock > 0</query>
Незакавыченные или неправильно закавыченные атрибуты
Все значения атрибутов XML должны быть заключены в одинарные или двойные кавычки. Незакавыченные значения атрибутов допустимы в HTML5, но являются ошибкой правильной оформленности в XML. Также значение, содержащее двойную кавычку, должно использовать одинарные кавычки в качестве ограничителей (или экранировать кавычку как ").
<product id=p01 label="It's a "widget"">
<product id="p01" label="It's a "widget"">
Несколько корневых элементов
XML-документ должен содержать ровно один корневой элемент, включающий все остальные элементы. Распространённая ошибка при соединении XML-фрагментов — получение двух или более элементов верхнего уровня рядом, что недопустимо в XML (хотя и распространено в HTML). Оберните все дочерние элементы в единственный корневой контейнер.
<user><name>Alice</name></user> <user><name>Bob</name></user>
<users> <user><name>Alice</name></user> <user><name>Bob</name></user> </users>
Несоответствие кодировки в XML-декларации
Если ваш XML-файл сохранён в UTF-16 или другой кодировке, не UTF-8, но декларация указывает encoding="UTF-8" (или отсутствует, что по умолчанию означает UTF-8), некоторые парсеры отклонят его или выдадут «мусор». При вставке в браузерный инструмент браузер автоматически обрабатывает кодировку. Для файлов на диске убедитесь, что атрибут кодировки соответствует фактической кодировке файла.
<?xml version="1.0" encoding="UTF-8"?> <!-- File is actually saved as UTF-16 -->
<?xml version="1.0" encoding="UTF-16"?> <!-- File saved as UTF-16, declaration matches -->
Секция CDATA не закрыта должным образом
Секция CDATA начинается с . Если закрывающая последовательность ]]> отсутствует или написана с ошибкой, парсер рассматривает всё последующее как часть секции CDATA, пока не найдёт другую ]]> или не достигнет конца документа. Это обычно проявляется как ошибки «неожиданный конец документа».
<script><![CDATA[
if (a < b && b > c) { return true; }
<!-- ]]> is missing --> <script><![CDATA[
if (a < b && b > c) { return true; }
]]></script> Типичные сценарии
- Отладка полезных нагрузок SOAP / веб-сервисов
- Ответы SOAP от корпоративных API и устаревших веб-сервисов приходят в виде однострочных XML-строк. Вставьте необработанную полезную нагрузку в форматировщик, чтобы мгновенно увидеть структуру конверта, заголовки и тело — это упрощает поиск нужного поля или обнаружение несоответствия пространств имён. Смотрите также: Конвертер XML в JSON, если вам нужно обработать полезную нагрузку в JavaScript.
- Валидация конфигурационных файлов и дескрипторов развёртывания
- Файлы Maven POM, контексты приложений Spring XML, server.xml Tomcat, файлы Android Manifest и многие другие Java/корпоративные конфигурационные файлы — это XML. Пропускайте их через валидацию перед коммитом, чтобы выявить несовпадающие теги или проблемы кодировки, которые иначе проявятся только во время сборки или развёртывания.
- Форматирование вывода RSS и Atom-лент
- Ленты RSS 2.0 и Atom 1.0 — это XML. При разработке генератора лент или отладке проблем совместимости с читателями лент отформатируйте необработанный XML ленты, чтобы рядом просмотреть метаданные канала, структуру элементов и необходимые объявления пространств имён.
- Чтение и редактирование SVG-файлов
- SVG-файлы, экспортированные из Figma, Illustrator или Sketch, являются допустимым XML, но зачастую минифицированы или содержат избыточные отступы от экспортёра. Отформатируйте SVG для получения чистого, удобного для навигации дерева элементов перед ручным редактированием путей, групп или атрибутов стилей.
- Подготовка XML для хранения или передачи
- При хранении XML в столбце базы данных, отправке его в виде строкового поля JSON в запросе API или вставке в очередь сообщений сначала используйте минификацию для удаления ненужных пробелов. Это уменьшает размер полезной нагрузки и предотвращает проблемы с JSON-парсерами, которые могут давать сбои на неэкранированных управляющих символах в больших отформатированных XML-строках.
- Конвертация XML в JSON
- Если вам нужно конвертировать отформатированный XML в JSON для использования в JavaScript-приложении или REST API, воспользуйтесь нашим Конвертером XML в JSON. Для обратной операции — построения XML из JSON-структуры — используйте Конвертер JSON в XML.
Технические детали
- DOMParser браузера для разбора XML
- Разбор XML выполняется с помощью нативного DOMParser браузера с MIME-типом 'text/xml'. Это тот же движок, что обеспечивает рендеринг SVG и XHTML в браузере — он полностью соответствует спецификации XML 1.0 и сообщает об ошибках правильной оформленности с указанием строки и столбца. Когда документ не правильно оформлен, DOMParser возвращает документ parsererror с сообщением об ошибке и её позицией, которую этот инструмент извлекает и отображает.
- Сериализация DOM-дерева для форматирования
- Форматирование работает путём разбора XML в DOM-дерево с последующим рекурсивным обходом дерева для получения форматированного вывода. Такой подход сохраняет семантическую структуру документа: вложенность элементов, текстовое содержимое, атрибуты, секции CDATA, инструкции по обработке и комментарии сериализуются обратно в точности так, как были разобраны. Удаляются только текстовые узлы, содержащие исключительно пробелы, — текстовые узлы с непробельными символами всегда сохраняются.
- Минификация через удаление текстовых узлов с пробелами
- Минификация обходит то же DOM-дерево и удаляет текстовые узлы, содержимое которых состоит исключительно из пробельных символов (пробелы, табуляция, переносы строк). Текстовые узлы со смешанным или непробельным содержимым — фактические данные между тегами — никогда не удаляются. Атрибуты и их значения сериализуются без добавления пробелов. Результат — наиболее компактное правильно оформленное XML-представление исходного документа.
- 100% работа в браузере — без загрузки и сервера
- Вся обработка выполняется в JavaScript-среде выполнения вашего браузера. Никакие данные не передаются на сервер ни в какой момент. Это особенно важно для XML-полезных нагрузок, которые нередко содержат конфиденциальное содержимое: токены SOAP WS-Security, данные пациентов HL7, конфигурация внутренних сервисов и форматы финансовых сообщений (FIX, SWIFT ISO 20022). Инструмент безопасно использовать с любым XML, который вы бы не хотели вставлять в публичный сервис.
Лучшие практики
- Валидируйте перед форматированием, форматируйте перед коммитом
- Сначала валидируйте XML, чтобы убедиться в его правильной оформленности, прежде чем переформатировать — форматировщик молча выдаст некорректный результат, если входной XML не является допустимым. После валидации отформатируйте и проверьте вывод с отступами, прежде чем фиксировать конфигурационные файлы, шаблоны лент или определения WSDL в системе контроля версий.
- Используйте 2-пробельный отступ для веб-форматов, 4-пробельный для корпоративного XML
- Отступ в 2 пробела является конвенцией для RSS/Atom-лент, SVG, XHTML, Android XML и большинства веб-ориентированных XML. Отступ в 4 пробела распространён в корпоративных Java-средах (Maven POM, файлы контекста Spring, дескрипторы развёртывания JBoss). Придерживайтесь конвенции ваших существующих файлов и инструментальной цепочки.
- Минифицируйте XML перед встраиванием в JSON
- Если вам нужно встроить XML-строку в качестве значения поля JSON, всегда минифицируйте её сначала. Форматированный XML содержит переносы строк и множество пробелов, которые необходимо экранировать в JSON (\n, несколько \u0020), что значительно увеличивает размер полезной нагрузки. Минифицированный XML также значительно реже вызывает ограничения на длину строки в промежуточных прокси или системах логирования.
- Экранируйте специальные символы в текстовом содержимом, используйте CDATA экономно
- Для коротких текстовых значений, содержащих & или <, используйте символьные ссылки (&, <) — они более переносимы, чем секции CDATA, и работают в значениях атрибутов. Резервируйте секции CDATA () для встраивания больших блоков кода, SQL-запросов или HTML-фрагментов, где экранирование каждого специального символа делает содержимое нечитаемым.
- Объявляйте пространства имён как можно раньше
- Объявляйте пространства имён XML (xmlns:prefix="URI") на корневом элементе или элементе наивысшего уровня, использующем этот префикс. Объявление пространств имён глубоко в дереве документа затрудняет чтение XML и может вызвать проблемы с потоковыми XML-парсерами (SAX, StAX), которые обрабатывают пространства имён инкрементально. Пример SOAP-конверта выше демонстрирует рекомендуемый шаблон: все объявления пространств имён на корневом элементе Envelope.
Часто задаваемые вопросы
Отправляются ли мои XML-данные на сервер при использовании этого инструмента?
Что проверяет кнопка «Валидировать»?
Выполняет ли валидация проверку по схеме XML (XSD) или DTD?
В чём разница между форматированием (красивым выводом) и минификацией?
Сохраняет ли форматирование XML-комментарии и атрибуты?
Как отформатировать XML с отступом в 4 пробела вместо 2?
Какую версию XML и кодировку поддерживает этот инструмент?
Что вызывает ошибку «правильной оформленности» и как её исправить?
Можно ли использовать этот инструмент для форматирования XHTML или SVG файлов?
Как этот инструмент обрабатывает пространства имён XML?
Есть ли ограничение на размер XML-ввода?
Как конвертировать XML в JSON или JSON в XML?
Похожие инструменты
Все инструменты →Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
Конвертер CSV в JSON
Кодирование и форматирование
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.
JSON Diff и сравнение
Кодирование и форматирование
Сравнивайте два JSON-файла мгновенно в браузере. Side-by-side подсветка, вывод JSON Patch (RFC 6902), игнорирование шума вроде timestamp и ID. 100% приватно, без загрузки.
Форматировщик и валидатор JSON
Кодирование и форматирование
Форматирование, проверка и улучшение читаемости JSON прямо в браузере. Бесплатный онлайн-инструмент с проверкой синтаксиса, поиском ошибок, минификацией и копированием в один клик. Полная приватность.
Валидатор JSON Schema
Кодирование и форматирование
Проверяйте JSON по любой JSON Schema мгновенно в браузере. Поддержка Draft 2020-12, 2019-09 и Draft-07 с точными путями ошибок. 100% приватно — без загрузки, без аккаунта, бесплатно.
Конвертер JSON в CSV
Кодирование и форматирование
Конвертируйте JSON в CSV в браузере. Пресеты RFC 4180, Excel-EU, TSV, Pipe. Flatten или Stringify. 100% приватно, без загрузки.