从 xsd:extension 获取 C++ 对象

Getting C++ object from xsd:extension

我正在使用来自代码合成的 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

您很可能错过了 --polymorphic-type 命令行选项。

引用自CodeSynthesis XSD/Tree Manual

"However, if your XML vocabulary is not using substitution groups or if substitution groups are defined in a separate schema, then you will need to use the --polymorphic-type option to specify which types are polymorphic."

在此处阅读有关 --polymorphic-type 命令行选项的更多详细信息:

CodeSynthesis XSD/Tree command line options