是否可以使用TinyXML2(或任何其他库)将结构或类直接转换为XML文件,反之亦然?

时间:2013-03-26 08:31:33

标签: c++ xml tinyxml

我的结构数量如下:

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>

提前致谢。

1 个答案:

答案 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来更改值。