C ++ библиотека для хранения настроек в XML - PullRequest
5 голосов
/ 10 апреля 2011

Прежде чем я начну писать в своей собственной библиотеке настроек, я хотя бы попытался найти существующую.Я гуглил и нашел много для C # или MFC, но ничего, что использовало бы простой C ++ / STL.Я хотел бы что-то, что позволяет доступ через ключи, такие как:

mySettings["Root"]["Subsection"]["Value"].Value

Или что-то в этом роде.Есть ли что-нибудь, что может предоставить такой интерфейс XML-файла, или мне придется свернуть свой собственный?

Спасибо, J

Ответы [ 3 ]

7 голосов
/ 10 апреля 2011

Существует TinyXML и pugixml

PugiXML поддерживает XPath

5 голосов
/ 10 апреля 2011

Дерево свойств Boost - одна из таких библиотек, хотя вы должны решить, хотите ли вы повысить ее только для этой цели. Это хорошо работает для простых свойств конфигурации, как показано в примере, хотя я вспоминаю, что выполнение чего-то более сложного заняло у меня немного больше времени, чтобы разобраться:

Следующий код взят из документации:

// Create an empty property tree object
using boost::property_tree::ptree;
ptree pt;

// Load the XML file into the property tree. If reading fails
// (cannot open file, parse error), an exception is thrown.
read_xml(filename, pt);

// Get the filename and store it in the m_file variable.
// Note that we construct the path to the value by separating
// the individual keys with dots. If dots appear in the keys,
// a path type with a different separator can be used.
// If the debug.filename key is not found, an exception is thrown.
m_file = pt.get<std::string>("debug.filename");
0 голосов
/ 17 августа 2013

Все интересные ответы. Но я должен подчеркнуть, что до тех пор, пока C ++ не предоставит свой собственный XML API, использование истинного XML-файла конфигурации и реализация собственного настраиваемого класса XML-конфигурации - лучший путь. Сегодня я сталкиваюсь с той же задачей, и это решение, которое я собираюсь использовать. Вы можете увидеть черно-белые настройки конфигурации, потому что вы поддерживаете свою собственную XML-схему. Затем ваш класс конфигурации XML настраивается для анализа этой схемы без перегрузки вашего решения множеством лишних функций и сложностей. Простая, лаконичная и практичная / = раздутая программа.

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