2

コード合成から xsd to 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 マニュアルからの引用は次のとおりです。

「ただし、XML ボキャブラリが置換グループを使用していない場合、または置換グループが別のスキーマで定義されている場合は、 --polymorphic-type オプションを使用してどのタイプがポリモーフィックであるかを指定する必要があります。」

--polymorphic-typeコマンド ライン オプションの詳細については、こちらをご覧ください。

CodeSynthesis XSD/Tree コマンド ライン オプション

于 2015-07-10T14:39:44.617 に答える