我的结构数量如下:
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文件,而无需手动传递 struct C 中的每个成员变量?我想要的将是这样的:
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>
提前致谢。
答案 0 :(得分:1)
你可以使用boost :: serialization来做你所要求的......
http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html
它具有从上一页处理XML(和其他格式)的广泛功能:
在本教程中,我们使用了特定的归档类 - 用于保存的text_oarchive和用于加载的text_iarchive。文本档案 将数据呈现为文本,并且可跨平台移植。此外 文本存档,该库包括本机二进制的存档类 数据和xml格式的数据。所有归档类的接口都是 相同。为类定义序列化后,该类 可以序列化为任何类型的存档。
编辑:您将处理对象并对其进行序列化,而不是直接操纵XML来更改值。