Можно ли использовать TinyXML2 (или любую другую библиотеку) для преобразования структуры или класса непосредственно в файл XML и наоборот?

У меня есть ряд структур, которые выглядят так:

struct A
{
long lValueA;
BOOL bValueA;
CString strValueA;
};
struct B
{
long lValueB;
BOOL bValueB;
CString strValueB;
};
struct C
{
A a;
vector<B> vecB;
};

Можно ли использовать TinyXML2 (или любую другую библиотеку) для преобразования его в XML-файл, не передавая вручную каждую переменную-член из структура С? то, что я хочу, будет выглядеть так:

main()
{
C c;
// Some code to initialise member variable of struct C

// pass object/structure to XML parser to get XML file.
Some_XML_Library_Object.parse( c );
Some_XML_Library_Object.SaveFile("FilePath/Name.xml");

// Also it would be nice if we can update values in structure or class directly like this
const char* XML_File_Path = "FilePath/Name.xml";
Some_XML_Library_Object.updateValueOfStructureFromXML(&c,XML_File_Path)
}

XML-файл выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<A>
<lValueA>
value
</lValueA>

<bValueA>
value
</bValueA>

<strValueA>
value
</strValueA>
</A>

<B>
<lValueB>
value
</lValueB>
...
...
</B>

Заранее спасибо.

1

Решение

Вы можете использовать boost :: serialization, чтобы сделать что-то вроде того, что вы просили …

http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html

он имеет широкие возможности для обработки XML (и других форматов) на странице выше:

В этом уроке мы использовали определенный класс архива —
text_oarchive для сохранения и text_iarchive для загрузки. текстовые архивы
визуализировать данные в виде текста и переносимы между платформами. В дополнение к
текстовые архивы, библиотека включает в себя класс архива для собственного двоичного файла
данные и данные в формате XML. Интерфейсы для всех архивных классов все
идентичны. Как только сериализация была определена для класса, этот класс
может быть сериализован в любой тип архива.

Изменить: вы будете обрабатывать объекты и сериализовать их, а не манипулировать XML напрямую для изменения значений.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]