XML Formatter

Форматуйте та красиво відображайте XML із підсвічуванням синтаксису

Спробувати приклад

XML-введення

Відформатований XML

Працює локально · Безпечно вставляти секрети
Відформатований XML з'явиться тут…

Що таке форматування XML?

Форматування XML (також відоме як XML pretty-printing або XML beautification) — це процес додавання узгоджених відступів та переносів рядків до XML-документа, щоб зробити видимою його ієрархічну структуру. Необроблений XML, отриманий від API, генераторів конфігурацій або серіалізаторів, часто передається одним рядком без пробілів між тегами. XML-форматтер розбирає такий документ у дерево, а потім серіалізує його заново з передбачуваними відступами. Результат є візуально зрозумілим та значно простішим для сприйняття, при цьому логічний вміст документа залишається незмінним.

Специфікація XML 1.0 (Рекомендація W3C, п'яте видання) визначає суворий синтаксис: кожен відкривальний тег має мати відповідний закривальний або бути самозакривальним, атрибути мають бути взяті в лапки, а п'ять символів (<, >, &, ", ') потребують екранування за допомогою entity-посилань. Форматтер має дотримуватись цих правил, вставляючи лише незначні пробіли, що не змінюють інформаційний набір документа (infoset). Розуміння цих правил є принциповим для гарантії того, що відформатований XML залишається коректним та може бути оброблений будь-яким сумісним XML-процесором.

Відформатований XML легше читати під час рецензування коду, легше порівнювати у системі контролю версій та легше відлагоджувати, коли сервіс повертає неочікувані дані. Сама операція форматування є беззбитковою: логічний вміст документа залишається незмінним, змінюється лише подання. Такі інструменти як git diff та платформи рецензування pull-запитів показують лише змінені рядки — узгоджено відформатований XML гарантує, що ці відмінності відображають реальні зміни, а не шум від переформатування.

Before · xml
After · xml
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date></book></catalog>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
  </book>
</catalog>

Навіщо використовувати онлайн XML Formatter?

Форматування XML вручну є схильним до помилок і повільним, особливо для документів із глибокою вкладеністю або змішаними просторами імен. Форматтер у браузері дає відформатований результат менш ніж за секунду, незалежно від розміру файлу. На відміну від настільних програм або утиліт командного рядка, він не вимагає встановлення чи налаштування — просто відкрийте сторінку і одразу починайте роботу.

Миттєве форматування
Вставте або введіть XML і отримайте відформатований результат одразу. Не потрібно чекати встановлення CLI-інструменту чи виконання кроку збірки.
🔒
Конфіденційність за замовчуванням
Весь парсинг і форматування відбуваються у браузері за допомогою DOMParser API. Ваш XML ніколи не покидає вашу машину та не передається на жодний сервер.
🎨
Налаштування відступів
Обирайте між відступами у 2 пробіли, 4 пробіли або табуляцію відповідно до стандартів кодування вашого проекту — без редагування конфігураційних файлів.
📋
Без облікового запису та встановлення
Відкрийте сторінку, вставте XML і скопіюйте результат. Жодних форм реєстрації, настільного програмного забезпечення чи розширень браузера.

Сценарії використання XML Formatter

Frontend-розробка
Перевіряйте SVG-розмітку або XHTML-фрагменти, повернуті CMS. Форматування необробленого виводу дозволяє швидко знаходити конкретні атрибути та вкладені групи.
Backend-розробка
Відлагоджуйте SOAP-відповіді, RSS-стрічки або XML-RPC-пейлоади від сторонніх сервісів. Відформатований вивід дозволяє відстежити відсутні елементи або некоректні простори імен.
DevOps та CI/CD
Читайте файли Maven pom.xml, Ant-скрипти збірки або .csproj-файли проектів, згенеровані машиною без відступів. Форматуйте їх перед комітом, щоб зберегти чистоту diff-ів.
QA та тестування
Порівнюйте очікувані та фактичні XML-пейлоади в інтеграційних тестах. Форматування обох сторін з однаковим стилем відступів усуває хибні негативи, спричинені відмінностями в пробілах.
Інженерія даних
Перевіряйте XML-експорти з баз даних, ETL-пайплайнів або порталів відкритих даних. Відформатований XML розкриває структуру записів до того, як ви напишете XSLT-трансформацію або XPath-запит.
Вивчення XML
Студенти, що опрацьовують навчальні матеріали W3C XML, можуть вставляти навчальні файли у форматтер, щоб перевірити правильність вкладеності та синтаксис атрибутів.

Довідник зарезервованих entity-посилань XML

XML резервує п'ять символів для свого синтаксису. Коли ці символи з'являються як текстовий вміст або значення атрибутів, їх слід замінювати наперед визначеними entity-посиланнями. Коректний форматтер зберігає ці entity під час форматування.

СимволРоль в XMLEntity
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

Порівняння стилів відступів XML

Єдиного стандарту для відступів XML не існує. Вибір залежить від угод вашої команди та інструментів у вашому пайплайні. Ось три найпоширеніші стилі.

2 пробіли (рекомендовано)
Найпоширеніший вибір для XML, пов'язаного з вебом: SVG, XHTML, SOAP, конфігурації Spring. Зберігає компактність документів із глибокою вкладеністю. Використовується за замовчуванням у більшості онлайн-форматтерів та IDE.
4 пробіли
Перевагу надають в екосистемах Java (Maven, Ant, Android-маніфести), де файли рідко перевищують 3-4 рівні вкладеності. Відповідає стандартному відступу коду Java та C#.
Символ табуляції
Дозволяє кожному розробнику встановити власну візуальну ширину в редакторі. Поширений у застарілих проектах та деяких інструментах Microsoft (.csproj, .nuspec). Дає менший розмір файлів порівняно з пробілами.

Приклади коду: форматування XML програмно

Коли потрібно форматувати XML у скрипті або процесі збірки, кожна поширена мова програмування має вбудований або стандартний варіант. У Python підходить модуль xml.dom.minidom або lxml, у Java доступний javax.xml.transform із підтримкою відступів, а у Node.js є бібліотеки xmldom або prettier. Нижче наведено робочі приклади, які можна копіювати безпосередньо.

JavaScript (DOM API)
const raw = '<root><item>hello</item></root>'
const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')
const serializer = new XMLSerializer()
const xml = serializer.serializeToString(doc)

// Indent with XSLT (browser-native approach)
const xslt = new DOMParser().parseFromString(`
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="node()|@*">
      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
    </xsl:template>
  </xsl:stylesheet>`, 'application/xml')

const proc = new XSLTProcessor()
proc.importStylesheet(xslt)
const formatted = proc.transformToDocument(doc)
console.log(new XMLSerializer().serializeToString(formatted))
// → <root>\n  <item>hello</item>\n</root>
Python
import xml.dom.minidom

raw = '<root><item>hello</item><item>world</item></root>'
dom = xml.dom.minidom.parseString(raw)
print(dom.toprettyxml(indent='  '))
# → <?xml version="1.0" ?>
# → <root>
# →   <item>hello</item>
# →   <item>world</item>
# → </root>

# With lxml (handles namespaces, XSD, large files)
from lxml import etree
tree = etree.fromstring(raw.encode())
print(etree.tostring(tree, pretty_print=True).decode())
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func formatXML(raw string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    encoder.Indent("", "  ")
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// formatXML("<a><b>1</b></a>") → "<a>\n  <b>1</b>\n</a>"
CLI (xmllint)
# Format XML file with xmllint (part of libxml2, pre-installed on macOS/Linux)
xmllint --format input.xml > formatted.xml

# Format from stdin
echo '<a><b>1</b></a>' | xmllint --format -
# → <?xml version="1.0"?>
# → <a>
# →   <b>1</b>
# → </a>

# Validate and format at the same time
xmllint --format --schema schema.xsd input.xml

Часті запитання

Чи змінює форматування XML значення документа?
Ні. Форматування XML лише додає або видаляє незначні пробіли між тегами. Інформаційний набір XML (infoset) залишається незмінним. Один виняток: якщо ваша схема використовує xml:space="preserve" для певних елементів, форматтер має залишати ці елементи без змін — цей інструмент це враховує.
У чому різниця між форматуванням та валідацією XML?
Форматування додає відступи та переноси рядків для зручності читання XML. Валідація перевіряє, чи відповідає документ схемі (XSD, DTD або RelaxNG). Документ може бути коректно сформованим, але невалідним відносно своєї схеми. Використовуйте цей форматтер для зручності читання, а інструмент XML Validator — для перевірки відповідності схемі.
Чи можна форматувати XML із просторами імен?
Так. DOMParser браузера обробляє простори імен XML нативно. Префікси просторів імен, оголошення просторів імен за замовчуванням (xmlns) та кваліфіковані імена атрибутів зберігаються під час форматування. Форматтер не додає, не видаляє та не перейменовує жодні прив'язки просторів імен.
Який максимальний розмір XML-файлу можна форматувати у браузері?
Форматування у браузері добре працює для документів розміром до приблизно 10 МБ. Для більших файлів DOM-дерево споживає значний обсяг пам'яті, і інтерфейс може стати неповороткім. Для дуже великих файлів використовуйте CLI-інструмент, наприклад xmllint --format, який обробляє XML потоково.
Чому у відформатованому XML з'явилося XML-оголошення?
Деякі форматтери додають <?xml version="1.0"?> під час серіалізації DOM-дерева. Це оголошення є необов'язковим у XML 1.0, якщо кодування — UTF-8. Якщо воно вам не потрібне, видаліть перший рядок з виводу. Оголошення не впливає на парсинг жодним сумісним XML-процесором.
Чи є форматування XML тим самим, що мініфікація XML?
Це протилежні операції. Форматування додає пробіли для покращення читабельності. Мініфікація видаляє всі несуттєві пробіли для зменшення розміру файлу. Обидві операції є беззбитковими відносно XML infoset. Якщо потрібно мініфікувати XML, використовуйте інструмент XML Minifier.
У чому різниця між форматуванням XML та HTML?
XML є суворим: кожен тег має бути закритий, значення атрибутів мають бути взяті в лапки, а документ має мати рівно один кореневий елемент. HTML (зокрема HTML5) є поблажливим: необов'язкові закривальні теги, атрибути без лапок і порожні елементи на кшталт &lt;br&gt; є допустимими. XML-форматтер відхилить некоректний XML, тоді як HTML-форматтер допускає синтаксис, який XML не дозволяє.