Замена XML для представления структур данных в C ++ - PullRequest
1 голос
/ 16 октября 2008

На работе у нас есть инструмент тестирования, который используется для отправки запросов к источнику данных. Инструмент принимает входные данные в виде файлов XML. Файлы XML были просты и удобны для анализа, если структуры данных, которые мы пытались представить, были на одном уровне. Но теперь эти структуры данных стали более сложными, и их представление в XML становится все более запутанным. Любые мысли о том, что я могу использовать для представления структур данных вместо XML?

Пример:

Перед тем:

class Foo {
 int userId;
 string name;
 string address;
 string eMail;
}

Сейчас:

class Foo {
 int userId,
 string name,
 vector<Location> loc,
 map<string, string> attributes;
}

class Location {
  Address addr; //class Address
  vector<LocatedTime> lcTime; //class LocatedTime
  Position ps; //class Position
}

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

Я склонялся к JSON, но я открыт для любых форматов представления.

Ответы [ 3 ]

4 голосов
/ 16 октября 2008

Вы смотрели на буферы протокола ? Двоичная сериализация, которая довольно эффективна во времени обработки и памяти. В настоящее время «должным образом» поддерживается в C ++, Java и Python, с большим количеством реализаций (от третьих лиц, таких как я; я реализую порт C #).

2 голосов
/ 16 октября 2008

YAML может быть то, что вы ищете.

1 голос
/ 16 октября 2008

Вы можете рассмотреть возможность использования Lua (или другого языка сценариев). Вы получаете хороший синтаксис структуры данных (примерно на уровне JSON) с полной мощью языка программирования. Таким образом, у вас есть переменные (вы можете строить свои структуры данных по частям, символически объявлять повторяющиеся значения и т. Д.), Циклы (тестовые данные часто повторяются), функции (воспринимать их как макросы для шаблонных конструкций в ваших данных).

Lua является особенно привлекательным кандидатом для такого рода использования, потому что он небольшой (добавляет 100-200K к вашей программе) и имеет довольно элегантный интерфейс для кода на языке C и из него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...