Тело 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, и сжатая версия появится справа. Убираются только пробельные отрезки между элементами. Текст элементов, значения атрибутов, комментарии, 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. Обе программы тоже оставляют комментарии, если их не убрать отдельно.
Когда портал не принимает файл из-за размера, обычно ищут «сжать XML». Удаление отступов помогает мало: заметно оно только на документе с глубокими отступами, а файл, который программа выгрузила одной строкой, не уменьшится вовсе. Основной объём таких документов — данные: координаты в межевом плане, строки товаров в УПД, а их сокращать нельзя.
Главное — подписанный файл менять нельзя вообще: подпись проверяется по исходному файлу байт в байт, и сжатая копия её не пройдёт. Как упаковывать документ, задаёт ведомство или программа, через которую вы отправляете. Например, межевой и технический план Росреестр принимает ZIP-пакетом, в котором лежат XML, приложения и файлы подписи .sig, а отчётность в налоговую формирует и отправляет программа оператора. Сжимайте здесь только файлы, которые ещё будете подписывать или которые вообще не подписываются. Сжать можно файл до 20 МБ — результат такого размера удобнее скачать, чем копировать.
Не сжимайте файлы, которые читают и правят люди: pom.xml, файлы проектов .csproj, AndroidManifest.xml, настройки приложений. Когда весь файл — одна строка, любая правка в git выглядит как замена всего файла, а найти, что изменилось, почти невозможно.
Не стоит сжимать и XML для отчётности, который потом откроет бухгалтер или проверяющий: программам всё равно, а человеку читать одну строку в несколько мегабайт тяжело. Если нужно и то и другое, храните отформатированную версию, а сжатую получайте при отправке.
Убираются ли комментарии
Нет: комментарий — часть документа, и некоторые программы хранят в нём служебные сведения. Если комментарии не нужны, удалите их в редакторе слева — результат пересчитается сам.
Меняются ли данные при сжатии
Нет. Исчезают только пробелы и переносы между тегами. Текст элементов, атрибуты, их порядок и кавычки, комментарии и CDATA остаются прежними.
Почему часть документа не сжалась
Там текст смешан с тегами или стоит xml:space="preserve". Пробелы в таких элементах — часть данных: убери их, и «Автомат С16» превратится в «АвтоматС16».
Сохранится ли кодировка windows-1251
Да: результат скачается в кодировке из объявления в первой строке. Если объявления нет, файл сохранится в UTF-8.
Можно ли сжать XML с ошибкой
Нет: сначала XML должен стать корректным, иначе непонятно, где кончается один элемент и начинается другой. Все ошибки сразу покажет режим «Проверка».
Куда уходят мои файлы
Никуда. Сжатие работает в браузере, запросы на чужие адреса запрещены заголовком безопасности, поэтому документы с реквизитами остаются на вашем компьютере.