XML в одну строку

Уберёт отступы между элементами, данные не изменятся

Исходный XML
Можно нажать Ctrl V или перетащить файл — результат появится справа
Пусто
Результат

Как пользоваться

  1. Вставьте XML в поле «Исходный» или откройте файл
  2. В результате появится тот же XML без отступов и переносов между элементами
  3. Скопируйте строку или скачайте файл с суффиксом .min.xml
  4. Чтобы вернуть отступы, выберите 2, 4 или Tab над результатом

Примеры

Тело SOAP-запроса для curl

Многострочный конверт неудобно вставлять в терминал или в строковую константу. В одну строку он целиком помещается в curl -d '…' с заголовком Content-Type: text/xml.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetOrder xmlns="http://example.com/orders"><Id>1057</Id></GetOrder></soap:Body></soap:Envelope>

Фрагмент для теста или конфига

Ожидаемый ответ в автотесте удобнее хранить одной строкой: сравнение не зависит от отступов, которые расставил редактор. Пробел внутри «Кабель ВВГнг 3х2,5» останется — это часть данных.

<Товар Ид="4f1c-0017"><Наименование>Кабель ВВГнг 3х2,5</Наименование><Цена>87.50</Цена></Товар>

Одна запись — одна строка лога

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

<GetOrder xmlns="http://example.com/orders"><Id>1057</Id><Fields>status,total</Fields></GetOrder>

Как перевести XML в одну строку

Здесь — вставьте XML, и сжатая версия появится справа. Убираются только пробельные отрезки между элементами. Текст элементов, значения атрибутов, комментарии, CDATA и объявление <?xml … ?> остаются как были. Пустые элементы тоже не меняются: <Документ/> не превратится в <Документ></Документ>, и наоборот, хотя для XML это одно и то же.

Элементы со смешанным содержимым — текст вперемешку с тегами, как <p>Автомат <b>С16</b></p>, — и элементы с xml:space="preserve" не сжимаются: пробелы в них значимы, и без них слова склеились бы.

В терминале то же делает xmllint --noblanks file.xml. В Python — lxml: etree.fromstring(data, etree.XMLParser(remove_blank_text=True)), затем etree.tostring. Обе программы тоже оставляют комментарии, если их не убрать отдельно.

Было
<Товар>
  <Ид>4f1c-0017</Ид>
  <Цена>87.50</Цена>
</Товар>
Стало
<Товар><Ид>4f1c-0017</Ид><Цена>87.50</Цена></Товар>

Как уменьшить XML для налоговой или Росреестра

Когда портал не принимает файл из-за размера, обычно ищут «сжать XML». Удаление отступов помогает мало: заметно оно только на документе с глубокими отступами, а файл, который программа выгрузила одной строкой, не уменьшится вовсе. Основной объём таких документов — данные: координаты в межевом плане, строки товаров в УПД, а их сокращать нельзя.

Главное — подписанный файл менять нельзя вообще: подпись проверяется по исходному файлу байт в байт, и сжатая копия её не пройдёт. Как упаковывать документ, задаёт ведомство или программа, через которую вы отправляете. Например, межевой и технический план Росреестр принимает ZIP-пакетом, в котором лежат XML, приложения и файлы подписи .sig, а отчётность в налоговую формирует и отправляет программа оператора. Сжимайте здесь только файлы, которые ещё будете подписывать или которые вообще не подписываются. Сжать можно файл до 20 МБ — результат такого размера удобнее скачать, чем копировать.

Когда XML лучше не сжимать

Не сжимайте файлы, которые читают и правят люди: pom.xml, файлы проектов .csproj, AndroidManifest.xml, настройки приложений. Когда весь файл — одна строка, любая правка в git выглядит как замена всего файла, а найти, что изменилось, почти невозможно.

Не стоит сжимать и XML для отчётности, который потом откроет бухгалтер или проверяющий: программам всё равно, а человеку читать одну строку в несколько мегабайт тяжело. Если нужно и то и другое, храните отформатированную версию, а сжатую получайте при отправке.

Частые вопросы

Убираются ли комментарии

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

Меняются ли данные при сжатии

Нет. Исчезают только пробелы и переносы между тегами. Текст элементов, атрибуты, их порядок и кавычки, комментарии и CDATA остаются прежними.

Почему часть документа не сжалась

Там текст смешан с тегами или стоит xml:space="preserve". Пробелы в таких элементах — часть данных: убери их, и «Автомат С16» превратится в «АвтоматС16».

Сохранится ли кодировка windows-1251

Да: результат скачается в кодировке из объявления в первой строке. Если объявления нет, файл сохранится в UTF-8.

Можно ли сжать XML с ошибкой

Нет: сначала XML должен стать корректным, иначе непонятно, где кончается один элемент и начинается другой. Все ошибки сразу покажет режим «Проверка».

Куда уходят мои файлы

Никуда. Сжатие работает в браузере, запросы на чужие адреса запрещены заголовком безопасности, поэтому документы с реквизитами остаются на вашем компьютере.

Другие инструменты