XML类描述到c++类描述:一种设计模式
XML class description to C++ class description: a design pattern?
我想知道是否有任何特定的设计模式(可能针对c++)针对这种情况。
我有一个包含以下格式数据的XML文件:
<STH_XML>
<tag1>
<tag2 id="myId1">
<tag3 name="type" value="myVal1"/>
<tag4 name="device" value="myVal2"/>
<tag5 name="instances" value="myVal3"/>
<tag6>
<tag7 id="myId2">
<specs name="type" value="myVal4"/>
<specs name="frequency" value="myVal5" unit="MHz"/>
</tag7>
</tag6>
</tag2>
</tag1>
不幸的是,这个XML的XSD/DTD经常变化。
我需要自动将XSD/DTD转换为一系列c++结构或类,如下所示:struct tag7
{
std::string id;
std::string type;
std::string frequency;
}
struct tag6
{
std::set<tag7*> tag6s;
}
struct tag2
{
std::string id;
std::string type;
std::string device;
std::string instances;
tag6 elem6; // because I know there is only one from the XSD analysis
}
struct tag1
{
std::set<tag2> tag2s;
}
什么设计模式最适合实现这个功能?
我不确定这是不是你需要的设计模式。
我可以推荐一种编程范例:代码生成。
您可以在XSD/XDD中定义您的结构,并自动生成您需要的c++ struct
。
更进一步,您可以用与语言无关的格式定义内容,然后从该格式生成XSD和c++。然后,如果你需要使用c#,你可以为它编写代码生成器。
最基本的是,代码生成器读取文件,解析它,然后通过对解析数据的一堆打印语句"生成"代码。
此过程可以作为构建前步骤的一部分。生成器处理XSD以生成c++,然后使用该c++构建您的项目。
我想你已经知道你需要做什么,但code generation
是它的术语。
相关文章:
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 资源管理设计模式
- 用于在回调中调用解析器的设计模式
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 在这种情况下我应该使用哪种设计模式
- C++中物体改变识别的设计模式?
- 确保所有构造函数调用相同的函数 c++ 设计模式
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 设计模式,以避免不必要地添加抽象函数以适应新功能
- 工厂设计模式优化
- 使用C++模板的数据映射器设计模式
- 为什么以及如何使用原型设计模式
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 在C++中创建观察器设计模式的好方法
- 现代C++在多大程度上消除了对设计模式的需求?
- 对于存储另一个类所需信息的类,例如其构造,是否有设计模式?
- 下面抽象工厂设计模式的实现是正确的吗
- sql记录集函数的状态设计模式
- 是否有可以处理方法调用依赖关系的设计模式?
- XML类描述到c++类描述:一种设计模式