Я використовую 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 />тег