xml — получение объекта C ++ из расширения xsd:

Я использую компилятор 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 никогда не вызывается. Однако для каждого BUTTON_ELEMENT в моем XML-файле вызывается конструктор elementBaseType.

Я что-то пропустил?
Я использую эту команду для генерации файлов C ++:

cxx-tree --std c++11 --generate-polymorphic --output-dir C:/generated Configuration.xsd

2

Решение

Вы, скорее всего, скучаете по —полиморфный тип опция командной строки.

Вот цитата из CodeSynthesis XSD / Tree Manual:

«Однако, если ваш словарь XML не использует группы подстановки или если группы подстановки определены в отдельной схеме, вам нужно будет использовать опцию —polymorphic-type, чтобы указать, какие типы являются полиморфными».

Читать подробнее о —полиморфный тип опция командной строки здесь:

Параметры командной строки CodeSynthesis XSD / Tree

0

Другие решения


По вопросам рекламы [email protected]