2012-02-24 3 views
10

Я экспортирую большие базы данных в xml-формат. Эти XML-данные необходимо сжать в наименьший возможный формат. Я много слышал об Efficient XML (EXI) и задавался вопросом, была ли реализация .NET, чтобы ее можно было вызывать из кода ....NET Реализация эффективного XML

У кого-нибудь есть пример этого, поскольку онлайн-ресурсы кажутся бит редкий ...

+6

Кажется, что вы управляете как кодом, сжимающим XML, так и кодом, который впоследствии распаковывает его. Не было бы лучше, если бы вы «сжали» его, сохранив его в некотором не-XML-формате, а затем «распаковали» его, переведя в XML? – svick

+1

Я бы выбрал что-то вроде JSON для сохранения этих байтов. Сомневаюсь, что кодировка информации поможет? –

+1

@PatrickMagee JSON сохранит только в тегах цитаты и теги конца, кроме того, что они не являются частью стандарта XML. Это далеко не любой двоичный формат, мой ответ содержит больше информации. –

ответ

3

Такая реализация действительно существует. Компания, которая создала предшественника формата Efficient XML Interchange (AgileDelta) offers an Efficient XML library, который включает в себя .Net версию. Хотя они, похоже, не публикуют цену.

The official EXI site не отображает другие .Net-реализацию.

+0

Нагасена имеет как .Net (написанная на C#), так и Java-версию спецификации EXI. –

2

Оказывается, Microsoft создала собственный бинарный формат/кодировку XML под названием MC-NBFX (catchy eh). Это часть платформы .NET и WCF с .NET 3.0. Для получения дополнительной информации см:

Другим вариантом является запуск реализации Java через IKVM, чтобы произвести сборку .Net. Открытые реализации исходного Java я мог бы найти это:

+0

Я дам +1 для информационного ответа. Но ему нравится, что придерживаться MC-NBFX является единственным доступным двоичным файлом XML, чего нет. Вы знаете, но ответ немного неясен. –

+0

Эта запись в блоге «Бинарный XML и словари WSF» имеет некоторую действительно полезную информацию, о которой я не знал. Спасибо, что поделились этим! –

0

Есть ли причина, вы хотите, наименьший возможный формат? XML не предназначен для оптимизации сжатия. @ Ответ Svick - это дефакто на данный момент, если вы хотите получить легкодоступные архивы.

Вы можете найти много того, что вы спрашиваете здесь: Best compression algorithm for XML?

EXI велик, если то, что вы хотите архивируются данные, которые будут регулярно доступ. В противном случае, если ваша цель заключается в архивировании в течение длительного времени, просто используйте утилиту zip. ПОЦЕЛУЙ.

+0

говорит, что хочет эффективности. Подумайте о тексте XML. Он должен будет преобразовать, например, целое число в десятичное представление ASCII, то, что потребляет ресурсы, до этого вы будете запускать zip-компрессор по всему файлу, снова уменьшая эффективность. Бинарный XML может быть эффективным и есть некоторые его реализации. Есть более эффективные форматы, но он запрашивает XML, так что так оно и есть. –

+0

Моя основная проблема с бинарными форматами заключается в том, что они могут не поддерживаться в конечном итоге. Кажется, он хочет архивировать данные, но все же держать их доступными. Как он должен архивировать его, зависит от того, как часто он рассчитывает получить к нему доступ. Я не согласен с тем, что бинарный XML предлагает некоторые преимущества эффективности (в других комментариях он хорошо освещался). Меня больше беспокоит, почему он хочет делать то, что он делает. Я считаю, что экспорт баз данных в формате XML в формате XML предлагает долгосрочное решение для хранения данных, которое не будет подвержено изменениям стандартов в течение десятилетия или около того в будущем, что может стоить дополнительной неэффективности. – VoteCoffee

+0

Бинарный XML, являющийся эффективным либо по мощности обработки, а по размеру, не основан на мнениях, является фактом. Использование источника, в терминах размера, может уменьшить размер на 80% _ (http://en.wikipedia.org/wiki/Fast_Infoset). В любом случае, я знаю, что вы имеете в виду, что он хочет долгосрочного обмена, но есть стандарты, которые определяют некоторый двоичный XML, использование того или иного мышления, которое они совершают, тогда мнение основано на том, что касается одного пункта. –

0

Бинарный XML - это способ пойти (и есть его реализация), если вам нужно приклеить к стандарту XML.

JSON, даже не являющийся XML, будет потерян с числами. Ex 32 бит unsigned int максимальное значение будет представлено 10 байтами в JSON. Почти во всех двоичных форматах это будет 4 байта. Это применимо к дате/времени и так далее.

Любой достойный бинарный XML, который имеет стандартные типы элементов/атрибутов, должен давать гораздо лучший размер и эффективность обработки. Если он может повторно использовать теги, например, словарь в сжатом файле, поскольку вы экспортируете его из таблицы, тоже будет хорошей функцией.

3

Nagasena имеет как .Net (написанные на C#), так и Java-реализации спецификации EXI.

+0

Но это так загадочно! И не хватает C# doc/tuto. Я был в состоянии (почти слепо) найти способ кодирования XML в EXI, но я отказался от получения XML обратно после сборки бросил мне необработанное исключение нулевой ссылки без видимых причин. – Jerther

+0

Это звучит не очень хорошо. Ну, в любом случае, вот прямая ссылка (https://sourceforge.net/projects/openexi/) в настоящий проект с открытым исходным кодом. – James

Смежные вопросы