从 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 命令行选项的更多详细信息:
我正在使用来自代码合成的 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 命令行选项的更多详细信息: