我正在使用codesynthesis中的xsd到c ++编译器。我正在编译这些xsd片段:
<xsd:complexType name="elementBaseType">
<xsd:sequence>
<xsd:element name="init" type="initElementType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BUTTON_ELEMENT">
<xsd:complexContent>
<xsd:extension base="elementBaseType">
<xsd:sequence>
<xsd:element name="imageClicked" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
在我的c ++代码中,我可以获得elementBaseType的所有信息。但我也需要来自我的专业BUTTON_ELEMENT的信息。我记录了解析步骤,似乎从未调用过BUTTON_ELEMENT的构造函数。但是,对于XML文件中的每个BUTTON_ELEMENT,都会调用elementBaseType构造函数。
我错过了什么吗? 我使用此命令生成c ++文件:
cxx-tree --std c++11 --generate-polymorphic --output-dir C:/generated Configuration.xsd
答案 0 :(得分:0)
您很可能错过了 - polymorphic-type 命令行选项。
以下是CodeSynthesis XSD/Tree Manual:
的引用“但是,如果您的XML词汇表没有使用替换组,或者如果替换组是在单独的架构中定义的,那么您将需要使用--polymorphic-type选项来指定哪些类型是多态的。”
在此处阅读有关 - polymorphic-type 命令行选项的更多详细信息: