XML-представление объектов C ++ - PullRequest
2 голосов
/ 23 июня 2009

Я пытаюсь создать программу проверки сообщений и хотел бы создать легко изменяемые правила, которые применяются к определенным типам сообщений. Из-за риска изменения правил я решил определить эти правила проверки вне кода объекта.

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

Каждому правилу потребуется только очень небольшой набор данных (то есть тип правила, значение, соответствующая маска и т. Д.).

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

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

Заранее спасибо за ваш вклад!

Ответы [ 4 ]

1 голос
/ 24 июня 2009

Еще один способ реализовать это - определить правила в XML-схеме, а затем с помощью инструмента привязки данных XML сгенерировать соответствующую объектную модель C ++ вместе с кодом синтаксического анализа и сериализации XML. Одним из таких инструментов (над которым я работаю) является CodeSynthesis XSD:

http://www.codesynthesis.com/products/xsd/

2-минутный обзор идеи см. В примере «Hello World» в документации по сопоставлению C ++ / Tree.

1 голос
/ 23 июня 2009

Самое простое - использовать плоский файл, разработанный для удобного анализа с помощью оператора C ++ >>. Простые токены, разделенные пробелами.

1 голос
/ 23 июня 2009

Что ж, если вы хотите, чтобы ваши правила были удобочитаемыми для человека, лучше всего использовать XML, и вы можете легко связать его с c ++, используя xerces . Если вам нужна производительность и / или размер, вы можете сохранить данные в виде двоичных файлов, используя простые структуры.

1 голос
/ 23 июня 2009

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

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

(Также boost :: serialization имеет XML-архив, но это не то, что я бы назвал легко модифицируемым)

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