Использование перечислений XML с данными XML Delphi, связывающими мастер

У меня есть XML-схема, которая использует перечисления, но когда я смотрю на сгенерированный объект XML в Delphi, ограничение перечисления было отброшено. Там какой-либо путь состоит в том, чтобы заставить Delphi генерировать перечисление и встраивать его в объект?

Отрывок XSD:

<xs:simpleType name="enumType" final="restriction">
    <xs:restriction base="xs:NMTOKEN">
        <xs:enumeration value="Each"/>
        <xs:enumeration value="Units"/>
        <xs:enumeration value="Area"/>
        <xs:enumeration value="Payroll"/>
        <xs:enumeration value="Sales"/>
        <xs:enumeration value="TotalCost"/>
        <xs:enumeration value="Other"/>
    </xs:restriction>
</xs:simpleType>

То, что я ожидал бы видеть в Delphi, является полем, которое принимает перечисление, которое затем преобразовывается в, он - строка corresponing, когда XML сгенерирован, но то поле является просто обычной строкой.

6
задан LostNomad311 22 January 2010 в 17:19
поделиться

2 ответа

Что вы можете сделать, это создать свой собственный перечисленный тип с теми же строковыми константами в качестве имени и используйте устройство Typinfo с функцией GetNUMValue и Getnumstring. Это позволяет вам префикнуть имена с несколькими строчными буквами, такими как в другом Code Delphi:

Value :=  TMyEnum( GetEnumValue( typeinfo( TMyEnum ), Prefix + AString )  )
5
ответ дан 17 December 2019 в 00:09
поделиться

Это невозможно для мастера связывания данных XML, чтобы сделать то, что вы хотите.

Причина в том, что перечисления в XSD не совместимы с идентификаторами Delphi, поскольку они:

  1. могут содержать символы, несовместимые с идентификатором Delphi
  2. , чувствителен к регистру

в основном XSD-перечисления, - это просто строки с ограниченным значения.

См. Спецификации перечисления и пример .

Оба явно несовместимы с типами перечисления Delphi.

Редактировать: 20100125 - Атрибуты Delphi

Вот интересный вопрос о том, как далеко вы можете пойти с новым атрибутом и поддержкой RTTI в Delphi 2010.

- Jeroen

2
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: