Я использую мастер привязки данных XML в 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>
-tag, и XML файл не будет проверять проверку XSD. Вероятно, это не было бы проблемой, если бы интерфейс предоставлял метод "добавления" тега Values.
Есть ли стандартный способ обработки этого, или я использую сгенерированный код правильно?
Простой, есть ли какой-либо способ, обход или иначе, используя код из мастера привязки данных, для создания следующего XML (это то, что необходимо для проверки с использованием приведенной выше схемы когда нет дочерних узлов), заданные HeaderType, ValuesType и EventsType имеют сложный тип:
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(Я знаю, что есть другие подобные проблемы, такие как код, сгенерированный <xs:sequence>
, не применяющий правильный порядок в конечном XML файле, но, по крайней мере, для этого, есть обход, просто вставляя детей в правильный порядок. Я все еще думаю, было бы неплохо, если бы Embarcadero предоставил бы полный интерфейс, который учитывал бы все эти функции.)
Не уверен, что понял, но, возможно, вы ищете: use = "optional"
<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
<xs:all>
<xs:element name="Header" type="HeaderType" use="optional" />
<xs:element name="Values" type="ValuesType" use="optional" />
<xs:element name="Events" type="EventsType" use="optional" />
</xs:all>
</xs:complexType>
Скажи мне, хорошо ли это.
TXMLValuesType.AfterConstruction
читаетRegisterChildNode('Value', TXMLValueType); FValue := CreateCollection(TXMLValueTypeList, IXMLValueType, 'Value') as IXMLValueTypeList;
таким образом, существует коллекция элементов Value (под родительским тегом Values), из-за чего так сложно создать пустой тег Values. Пустой список значений фактически не даст вам заставитьSaveToFile
создать<Values />