.NET реализация эффективного XML
Я экспортирую большие базы данных в формат XML. Эти данные XML должны быть сжаты в минимально возможный формат. Я много слышал об Efficient XML (EXI) и задавался вопросом, была ли реализация.NET, чтобы ее можно было вызывать из кода...
У кого-нибудь есть пример этого, поскольку онлайн-ресурсы кажутся немного скудными...
5 ответов
Такая реализация существует. Компания, которая создала предшественника формата Efficient XML Interchange (AgileDelta), предлагает библиотеку Efficient XML, которая включает в себя версию.Net. Хотя, похоже, они не публикуют цену.
Официальный сайт EXI не содержит никакой другой реализации.Net.
Nagasena имеет как.Net (написанная на C#), так и Java-реализацию спецификации EXI.
Оказывается, Microsoft создала свой собственный двоичный XML-формат / кодировку под названием MC-NBFX (броский взгляд). Это часть.NET Framework и WCF начиная с.NET 3.0. Для получения дополнительной информации см.:
- [MC-NBFX]: двоичный формат.NET: структура данных XML
- WCF Binary XML и словари
- Класс XmlDictionaryWriter
- Класс XmlDictionaryReader
Другой вариант - запустить реализацию Java через IKVM для создания сборки.Net. Я могу найти следующие реализации Java с открытым исходным кодом:
Есть ли причина, по которой вы хотите наименьший возможный формат? XML на самом деле не предназначен для оптимизации сжатия. Ответ @Svick на данный момент является де-факто, если вы хотите легко доступные архивы.
Вы можете найти много того, что вы спрашиваете здесь: Лучший алгоритм сжатия для XML?
EXI отлично подходит, если вам нужны архивные данные, которые будут регулярно доступны. В противном случае, если вашей целью является долгое архивирование, просто используйте утилиту zip. ПОЦЕЛУЙ.
Двоичный XML - это путь (и есть некоторая его реализация), если вам нужно приклеить к стандарту XML.
JSON, даже не будучи XML, будет потерян с числами. Например, 32-битное значение без знака в максимальном значении будет представлено 10 байтами в формате JSON. Почти во всех двоичных форматах это будет 4 байта. Это тогда будет применяться к дате / времени и так далее.
Любой приличный двоичный XML, который имеет стандартные типы элементов / атрибутов, должен давать гораздо лучший размер и эффективность обработки. Если он может повторно использовать теги, например, словарь в сжатом файле, когда вы экспортируете из таблицы, это тоже будет хорошая возможность.