У меня есть файл конфигурации заставки / загрузчик. В дополнение к ожидаемым данным есть узел <CustomData>
. При сохранении узла мы просто добавили бы std::string _customData
и добавили бы его в узел, например:
pugi::xml_document doc;
pugi::xml_node config = doc.append_child("OurConfig");
// save custom data
pugi::xml_node customData = config.append_child("CustomData");
customData.append_child(pugi::node_pcdata).set_value(_customData);
Наш _customData
был закодирован в base64 XML. Он предоставляется из другой части приложения. Это должна быть строка, так как другая часть приложения использует другой язык программирования (C#). Как вы можете себе представить, это стало раздражать, потому что это не было читаемым человеком. Первым шагом к решению этой проблемы было просто избавиться от base64 в приложении, которое предоставляет _customData
. Итак, теперь у нас есть читаемая версия, которая выглядит следующим образом:
<?xml version="1.0"?>
<OurConfig>
<CustomData><CfgRoot>
<SomeValue name="External setting for foo" value="Foo"/>
<SomeValue name="External setting for bar" value="Bar"/>
</CfgRoot></CustomData>
</OurConfig>
Но, возможно, она может улучшиться, если пользовательские данные будут напрямую добавлены в дерево XML вместо строкового значения. Как я могу добавить XML строку как XML, а не как строку к дереву pugi xml?
Ie. выходной я хотел бы:
<?xml version="1.0"?>
<OurConfig>
<CustomData>
<CfgRoot>
<SomeValue name="External setting for foo" value="Foo"/>
<SomeValue name="External setting for bar" value="Bar"/>
</CfgRoot>
</CustomData>
</OurConfig>