Формат документа - PullRequest
       5

Формат документа

0 голосов
/ 09 декабря 2010

Я играю в игру с моим другом.Теперь возникает вопрос об уровнях.Первая версия была построена с XML.Есть несколько причин, по которым мне это не нравится: слишком много данных и некоторые проблемы с анализатором, который мы использовали.Мы используем Boost, поэтому я решил взглянуть на json-parser .

Структура намного меньше и оптимизирована.Как вы думаете, не слишком ли это радикально, чтобы перейти от мощного XML к простому JSON?Достаточно ли мощности json-структуры для организации большого игрового уровня с большим количеством дополнительных данных и атрибутов?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Я часто использую JSON в веб-приложениях, написанных на python - есть действительно хорошие декодеры для XML и JSON.Разницы на самом деле не так много, за исключением того, что XML занимает немного больше места, но он более читабелен.JSON уже выглядит почти как словарь Python, так что это имеет смысл.Вероятно, главная причина, по которой JSON более распространен в сети, заключается в том, что JSON-RPC довольно хорош, тогда как XML-RPC плохо продуман, а SOAP слишком тяжел.декодер или нет, что достаточно быстро для ваших нужд.Я не знаю boost или работаю в C / C ++ очень часто.

0 голосов
/ 10 декабря 2010

Если вы уже используете считыватель, который помещает его в объект DOM, я не думаю, что стоит переключаться с XML на JSON, если вы в конечном итоге не измените свой формат данных во время процесса.Особенно, если вы используете редактор для создания данных вашей программы, потому что у вас будут намного лучшие инструменты для редактирования документов XML, чем в JSON.Скорее всего, время анализа этих объектов DOM не будет сильно отличаться между реализациями, но ваши объекты DOM экземпляра JSON, вероятно, будут занимать меньше места, если это вызывает озабоченность.Вы сможете хранить все, что вам нужно, либо в XML, либо в JSON, так что об этом не стоит беспокоиться.В качестве языка описания уровня я бы использовал XML, потому что я мог определить схему, и ее легче редактировать вручную, если это необходимо.Также кажется, что вам может понадобиться возможность эффективно создавать эти уровни, поскольку данные читаются и игнорируются все дополнительные данные экземпляра, если они не нужны как можно скорее.Для этого идеально подойдет XML SAX или pull-парсер.

Теперь, когда мой краткий ответ закончен, я немного подробнее расскажу информацию, которая может помочь вам лучше определиться для себя.

Как вы хотите получить доступ к данным?Вы хотите просто прочитать все это и получить большой объект для доступа или вам нужно только один раз взглянуть на данные, чтобы создать объекты на основе этой информации?Есть ли у вас какие-либо опасения по поводу производительности во время синтаксического анализа и как быстро вы можете реагировать на считываемую новую информацию?Может ли формат ваших данных сильно измениться?Хотите ли вы предоставить стандарт, в котором эта информация может передаваться за пределы вашего приложения?Какой язык программирования я использую?В некоторых языках есть отличные инструменты для JSON против XML в зависимости от языка.

Учитывая единственный выбор JSON или XML, я бы решил, основываясь на вариантах использования, относящихся к приложению.

Я быиспользуйте XML, если мне нужно действительно настроить производительность в моем парсере и иметь очень структурированный формат, который может быть описан и распространен и вряд ли будет часто меняться.Я мог бы использовать схему для описания требований к структуре данных, и это позволило бы другим людям легко поддерживать мои файлы данных.Я бы также использовал XML, если моя информация велика, и я хочу иметь возможность анализировать данные по частям и сохранять их непосредственно в объектах, что в итоге займет меньшую площадь, чем при использовании общей модели DOM и анализатора.Я бы использовал SAX push reader или потоковый ридер, который позволяет мне извлекать информацию, если мне нужно ответить на информацию, как она была прочитана. Есть много хороших библиотек, чтобы сделать это быстро и легко для XML.Если бы мне часто приходилось редактировать данные вручную или распечатывать для целей отладки, XML-документ уже находится в хорошем формате для этого.

Я бы использовал JSON, если мне нужно сохранить пространство документа экземпляра и я хочуОбъект типа DOM.Если бы у меня было два приложения, которые просто пытались обмениваться данными, таких как Python и Java, я бы использовал JSON, потому что он может считывать их в объекты экземпляра с помощью сеттеров и геттеров без сложной работы с фреймами, даже если это может замедлить работу.Если мне нужно только сериализовать и передавать объекты данных, JSON будет моим выбором по сравнению с XML, если это мои единственные варианты.

0 голосов
/ 10 декабря 2010

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

Скорее всего, и XML, и JSON действительно будут работать для вас, так что, возможно, просто посмотрите, какиелучшие библиотеки для вашего стиля разработки.

...