Я использую файл XML Data Binding Wizard
in 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
-tag.
Есть ли стандартный способ справиться с этим, или я правильно использую сгенерированный код?
Проще говоря , есть ли какой - нибудь способ, обходная или иным образом , используя код с 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 />
тега -tagОтветы:
Не уверен, что понимаете, но, возможно, вы ищете: use = "optional"
Скажи мне, нормально ли.
источник