我的结构如下所示:(示例)
struct struct3
{
struct structchild4
{
float child5;
} child6;
unsigned int child7;
};
我希望在XML中表示如下:
<tag1= "struct3">
<name>struct3</name>
<input_type>byte</input_type>
<method></method>
<tag_ref = "structchild4">
<name>child6</name>
</tag_ref>
<tag2= "child7">
<name>child7</name>
<len>4</len>
<value> </value>
</tag2>
</tag1>
我正在遵循的方法是将其转换为gccXML格式,然后使用Visual C ++解析它。我使用xerces -c DOM解析器。
有人可以建议怎么做吗?谢谢!
答案 0 :(得分:1)
更好的方法是反射,BoostLib有一些准备使用。 你做了类似的事情:
for( Attribute::Iterator it = reflectiveObject.getAttributeList().begin();
it != reflectiveObject.getAttributeList().end();
++it )
{
XML.createNode( it.getAttributeName() );
}
//然后方法相同。 应该有一个上层迭代器递归地通过类型,如果type有一个子类或子结构,那么识别XML并为它们运行相同的代码。
没有反射就更无聊了,你应该创建和Formater以及它的Parser,比如
if( dynamic_cast< DesirecClass* >( obj ) != NULL ){
XML.createNode( typeid( obj ).name() );
}
// Hard Code (terrible treatment) for each attribute, etc...
还有一些你可以搜索的解码方法。