Я використовую XML Data Binding Wizard
в Delphi XE2
. Для схеми потрібні теги цього типу:
<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
<xs:all>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Values" type="ValuesType" />
<xs:element name="Events" type="EventsType" />
</xs:all>
</xs:complexType>
Проблема полягає в тому, що якщо я не додаю жодних елементів до, наприклад, Values
-group, не буде <Values>
-tag, і XML-файл не вдасться перевірити проти XSD
. Це, ймовірно, не буде проблемою, якби інтерфейс забезпечував метод "додавання" Values
тегу.
Чи є стандартний спосіб поводження з цим, чи я правильно використовую згенерований код?
Простіше кажучи , чи є якийсь - небудь спосіб, обхідна або іншим чином , використовуючи код з Data Binding Wizard
, щоб зробити наступне XML
(що необхідно для перевірки з використанням вищевказаної схеми , коли немає ніяких дочірніх вузлів), з огляду на HeaderType
, ValuesType
і EventsType
мають ComplexType :
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(Я знаю, що є й інші подібні проблеми, як-от код, сформований <xs:sequence>
не наведенням правильного порядку у фінальному XML
файлі, але, принаймні, для цього, існує обробка, просто вставивши дітей у правильний порядок. Я все ще думаю було б непогано, якби ви Embarcadero
забезпечили повний інтерфейс, який враховує більше цих функцій.)
TXMLValuesType.AfterConstruction
читання, RegisterChildNode('Value', TXMLValueType); FValue := CreateCollection(TXMLValueTypeList, IXMLValueType, 'Value') as IXMLValueTypeList;
таким чином, існує колекція елементів-цінностей (під батьківським тегом Values), через що так важко створювати порожній Values-тег. Порожній список цінностей фактично не дозволить вам змусити SaveToFile
виробляти <Values />
тег