2

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

1 回答 1

0

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

这是来自CodeSynthesis XSD/Tree Manual的引用:

“但是,如果您的 XML 词汇表没有使用替换组,或者如果替换组是在单独的模式中定义的,那么您将需要使用 --polymorphic-type 选项来指定哪些类型是多态的。”

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

CodeSynthesis XSD/Tree 命令行选项

于 2015-07-10T14:39:44.617 回答