Как сжать XML-файл

Обновлено: 05.07.2024

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

Чтобы решить эту проблему, несколько человек исследовали различные методы сжатия. Возможно, два самых интересных варианта, которые следует учитывать при сжатии XML, — это zlib, алгоритм сжатия общего назначения, и Efficient XML Interchange (EXI), специальный метод кодирования XML, который создает двоичное кодирование.

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

EXI — относительно новая технология. Тем не менее, он предлагает возможность сжатия XML и сохранения «поточности» XML-потока. Можно было бы, например, использовать декодер в стиле SAX для получения сообщения EXI и декодирования без каких-либо дополнительных шагов. Для сравнения, при использовании zlib потребуется получить двоичное сообщение целиком, распаковать его, а затем проанализировать полученное XML-сообщение.

На первый взгляд может показаться, что zlib требует больше ресурсов процессора. Однако нам не хватает конкретной информации о требованиях к вычислительным ресурсам как для EXI, так и для zlib.

EXI предлагает ряд различных режимов работы, в том числе с выравниванием по битам (по умолчанию), выравниванием по байтам, с информацией о схеме, «без схемы», сжатием и т. д. Здесь определяются различные параметры.

Мы решили понять, насколько сильного сжатия мы можем добиться с помощью EXI, и сравнили это с zlib. Результаты представлены в таблице ниже.

Очень интересно отметить, что для немного больших файлов (размером более 1 КБ) почти все режимы объединяются для создания файлов примерно одинакового размера. Возникает вопрос, дает ли выбор более дорогого в вычислительном отношении режима какое-либо реальное преимущество.

Также интересно то, что zlib почти всегда создает файл меньшего размера, если размер файла превышает 1 КБ. Но использование EXI с возможностью внутреннего сжатия дает самое компактное кодирование из всех возможных.

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

Обратите внимание, что сжимаются только документы; метаданные и индексы не сжимаются.

Вы можете отключить сжатие. Вы также можете реализовать свою собственную процедуру сжатия.

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

Отключение сжатия

Вы отключаете сжатие, задавая XmlContainerConfig.NO_COMPRESSION для метода XmlContainerConfig.setCompressionName(). Обратите внимание, что это необходимо делать при каждом открытом контейнере, иначе при попытке извлечь документ из контейнера будет выдано исключение XmlException.

Использование пользовательского сжатия

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

Вы создаете пользовательскую процедуру сжатия, предоставляя реализацию XmlCompression . Вы должны реализовать методы, которые одновременно сжимают и распаковывают ваши документы. Каждый из этих методов должен возвращать true в случае успеха и false в случае неудачи.

Обратите внимание, что эти методы-члены не выполняют фактическую деятельность контейнера; скорее, они работают с данными, найденными в исходном параметре XmlData, и сохраняют результаты в целевом параметре XmlData.

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

Разработка с открытым исходным кодом

Обзор

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

Библиотека XML Compression компании Liquid решает эти проблемы с помощью отраслевого стандарта Fast InfoSet.Fast InfoSet (FI) обеспечивает способ хранения XML-данных в более эффективном формате. Документы FI имеют два явных преимущества: они небольшие, что позволяет уменьшить размер исходного XML-документа примерно на 90 % (так, 100 КБ становятся 10 КБ), они быстрее анализируются, занимая примерно 60 % процессорного времени для их анализа, см. статистика эффективности.

Fast Infoset ITU-T и стандарт ISO

Fast Infoset — это стандарт, определенный ITU-T (X.891) и ISO (IEC 24824-1), который определяет двоичное кодирование для информационного набора W3C XML. В отличие от других представлений XML, стандарт Fast Infoset имеет двойное преимущество сжатия и производительности, что делает его идеальным выбором для перемещения больших данных XML между разрозненными системами с низкой пропускной способностью или для высокопроизводительных систем, таких как те, которые используют веб-службы.

Совместимость

Приложения

Портативные устройства

С мобильными устройствами, которые обычно имеют доступ к соединениям для передачи данных с низкой пропускной способностью и более медленным процессором. Это делает Fast Infoset очевидным выбором, сокращая время передачи и обработки данных. Библиотека Liquid XML Compression LIbrary работает на компактной платформе, поэтому ее можно использовать на устройствах Win CE и Pocket PC. Размер dll составляет примерно 60 КБ, и при работе он очень эффективно использует память, что делает его идеальным для использования на мобильных устройствах.

Сохранение больших объемов данных

При сохранении XML в файл или базу данных объем данных, создаваемых вашей системой, часто может выйти из-под контроля. Это имеет ряд негативных последствий: время доступа увеличивается по мере того, как вы читаете больше данных, возрастает нагрузка на ЦП, поскольку XML-данные требуют больше усилий для обработки, а ваши затраты на хранение растут. Сохраняя свои XML-данные как Fast Infoset, вы можете сократить объемы данных до 5 раз.

Передача XML через Интернет

Как только приложение начинает передавать информацию через Интернет, одним из основных узких мест является пропускная способность. Если вы отправляете разумные порции данных, это узкое место может серьезно снизить производительность ваших клиентских приложений и ограничить способность ваших серверов обрабатывать запросы. Уменьшая объем данных, перемещаемых через Интернет, вы можете сократить время, необходимое для отправки или получения сообщения. При увеличении количества транзакций, которые ваш сервер может обрабатывать в час.

Системные требования

Простота использования

Классы LiquidTechnologies.FIReader и LiquidTechnologies.FIWriter можно использовать напрямую вместо классов System.Xml.XmlTextReader и System.Xml.XmlTextWriter без изменения окружающего кода, см. наш пример кода.

Это означает, что вы можете настроить и запустить свое приложение с преимуществами поддержки Fast Infoset очень быстро и с минимальными усилиями и риском.

Сжатие

На следующем графике показан типичный коэффициент сжатия, достижимый для XML-документов, закодированных Fast infoset, по сравнению со стандартными XML-документами*:

Liquid Fast Статистика сжатия InfoSet

Как видно из графика, данные, закодированные Fast Infoset, сжимаются примерно до 12 % от исходного размера XML-документа. Более того, чтение и запись сжатых данных выполняется быстрее, чем чтение и запись несжатых данных XML.

*Сжатие данных показано в среднем для тестовых документов Microsoft XML Mark 1.1.

Производительность

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

Liquid Fast Статистика производительности Infoset (сжатие XML)

Как видно из графика, данные, закодированные в Fast Infoset, обрабатываются в среднем на 67 % быстрее, чем стандартные данные XML.

Подробные результаты теста XML Mark 1.1

На следующем графике и в таблице показаны подробные результаты каждого выполненного теста XML Mark 1.1.

** Это дает прямое сравнение производительности между FIReader и FIWriter и XmlTextReader и XmlTextWriter.

Тест XML Mark 1.1 Liquid Fast Infoset для .Net v1.0.2 (TPS) Microsoft .Net Framework 2.0 (TPS) Прирост производительности в процентах DOM 1 433 270 60% DOM 2 410 258 59% DOM 3 370 244 52% DOM 4 197 164 20%< /td> DOM 5 182 154 18% DOM 6 177 150 18% SAX 1 513 207 148% SAX 2 262 104 152% SAX 3 133 52 156%

 Liquid Fast Infoset (XML Compression) XML Mark 1.1 Test Results

*Тест Microsoft XML Mark 1.1 проводился на рабочей станции Sun Ultra 20 (1 процессор AMD Opteron 148 с тактовой частотой 2,2 ГГц, 1 ГБ ОЗУ, контроллер NVIDIA nForce4 Serial ATA, жесткий диск Seagate 80 ГБ SATA 7200 об/мин, отформатированный как NTFS, Windows XP SP2).

System.Xml.XmlDocument

Сериализатор System.Xml.Xml

Встроенное и высокопроизводительное сжатие XML-документов ZIP, TAR, GZIP, BZ2 и распаковка архива с использованием серверной библиотеки zip-архивов.

Обзор

Загрузить с NuGet

Откройте диспетчер пакетов NuGet, найдите и установите.
Вы также можете использовать следующую команду из консоли диспетчера пакетов.

Команда

Разработчики могут легко архивировать папки, отдельные или несколько файлов программно, написав всего несколько строк кода.

  • Определить путь к папке, содержащей XML-файлы.
  • Создать объект архива.
  • Используя объект Archive, загрузите файл с полным путем, используя его метод CreateEntry.
  • Вызовите метод Save() и передайте имя сжатого файла (полный путь) в качестве параметра.
  • Теперь вы получите файл XML в виде zip-файла в соответствующей папке без использования zip, rar или любой другой совместимой программы.

Системные требования

Наши API поддерживаются на всех основных платформах и операционных системах. Перед выполнением приведенного ниже кода убедитесь, что в вашей системе выполнены следующие предварительные условия.

Онлайн-демонстрации сжатия XML

Сжимайте XML-документы прямо сейчас, посетив наш веб-сайт Live Demos. Демо-версия имеет следующие преимущества

XML Что такое формат файла XML

XML означает расширяемый язык разметки, который похож на HTML, но отличается использованием тегов для определения объектов. Вся идея создания формата файла XML заключалась в том, чтобы хранить и передавать данные, не завися от программных или аппаратных инструментов. Его популярность связана с тем, что он читается как человеком, так и машиной. Это позволяет ему создавать общие протоколы данных в виде объектов, которые будут храниться и совместно использоваться по сети, такой как World Wide Web (WWW). «X» в XML означает расширяемость, что означает, что язык может быть расширен до любого количества символов в соответствии с требованиями пользователя. Именно для этих функций его используют многие стандартные форматы файлов, такие как Microsoft Open XML, LibreOffice OpenDocument, XHTML и SVG.

Другие поддерживаемые форматы сжатия/распаковки



Если вы ищете более быструю программу сжатия с дополнительными наворотами (например, шифрование данных, уменьшение размера изображения и водяные знаки, удаление личных данных из файлов, преобразование doc в pdf, совместное использование в облаке и т. д.), вам следует проверьте последнюю версию WinZip. Загрузите WinZip отсюда


Как конвертировать xml в zip?


После того как все xml-файлы будут сжаты в ZIP-файл, вы можете нажать "Сохранить ZIP-файл", чтобы сохранить его на локальном диске.


Как преобразовать xml в zip в Dropbox?


  1. Нажмите логотип Dropbox ( ) на кнопке выбора XML-файлов.
  2. Появится окно выбора файлов Dropbox.Вам потребуется авторизовать доступ к ezyZip в первый раз.
  3. После того как вы выберете XML-файлы, они будут загружены в ваш браузер. Следуйте приведенным выше инструкциям, чтобы завершить преобразование.
  4. Чтобы сохранить преобразованный ZIP-файл в Dropbox, нажмите раскрывающийся список «Dropbox» под кнопкой «Сохранить Zip-файл». Это потребует авторизации при первом запуске.


Какие операционные системы и браузеры поддерживает ezyZip?


ezyZip поддерживает любую ОС, на которой можно запустить современный браузер. Мы протестировали его на совместимость с Windows, MacOS, Linux (например, Ubuntu, Mint, Debian), Android, ChromeOS (Chromebook), iOS (iPhone, iPad и iPod Touch).

Убедитесь, что вы используете последнюю версию одного из популярных браузеров или их вариантов. (например, Chrome, Firefox, Safari, Opera).

Если у вас возникли проблемы, сообщите нам об этом через форму обратной связи.


Что такое ezyZip?


ezyZip – это бесплатная утилита для архивирования файлов XML в формат ZIP в режиме онлайн. Он поддерживает множество других форматов архивных файлов.

В отличие от других онлайн-утилит конвертации, ezyZip НЕ имеет ограничений по размеру файла и не требует загрузки/выгрузки файлов на сервер. Он работает локально как приложение для браузера, что делает его намного быстрее. Это также гарантирует, что ваша конфиденциальность будет защищена, так как никакие данные файла не покинут ваш браузер.


Что такое xml-файл?


XML – это язык разметки (например, html), который позволяет хранить данные в структурированном формате с использованием определенных тегов. В отличие от html, пользователи могут указать свои собственные конкретные теги, которые они хотят использовать, и установить свои собственные правила целостности данных с помощью файла dtd.


Что такое zip-файл?


Расширение .zip является наиболее распространенным форматом архивов, используемым в Интернете для хранения набора файлов и каталогов в одном сжатом файле. Этим сжатым файлом можно легко поделиться между пользователями (например, по электронной почте)

Думайте об этом как о каталоге, который может содержать файлы и дополнительные подкаталоги после его открытия утилитой zip. Он сжимает данные с использованием алгоритма без потерь, что означает отсутствие ухудшения качества файла, как в некоторых форматах сжатия (например, mp3, jpeg). Алгоритм сжатия может варьироваться, однако наиболее распространенным является DEFLATE. Стандарт постоянно развивается, добавляются новые алгоритмы и параметры шифрования.

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