Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top