Ich benutze das XML Data Binding Wizardin Delphi XE2. Für das Schema sind Tags dieses Typs erforderlich:
<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>
Das Problem ist, dass, wenn ich zB der -group keine Elemente hinzufüge Values, es kein <Values>-tag gibt und die XML-Datei die Validierung gegen die nicht besteht XSD. Dies wäre wahrscheinlich kein Problem, wenn die Schnittstelle eine Methode zum "Hinzufügen" des Values-tags bereitstellen würde.
Gibt es eine Standardmethode, um damit umzugehen, oder verwende ich den generierten Code falsch?
Einfach ausgedrückt , gibt es eine Möglichkeit, das Problem zu umgehen oder auf andere Weise, indem der Code aus dem verwendet Data Binding Wizardwird, um Folgendes zu erzeugen XML(was zur Validierung unter Verwendung des obigen Schemas erforderlich ist, wenn keine untergeordneten Knoten vorhanden sind) HeaderType, ValuesTypeund EventsTypesind vom Typ complexType ::
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(Ich weiß, dass es andere ähnliche Probleme gibt, wie den Code, der generiert wird, wenn <xs:sequence>nicht die richtige Reihenfolge in der endgültigen XMLDatei erzwungen wird, aber zumindest für diese gibt es eine Problemumgehung, indem die Kinder einfach in der richtigen Reihenfolge eingefügt werden. Ich denke immer noch Es wäre schön, wenn Sie Embarcaderoeine vollständige Benutzeroberfläche bereitstellen würden, die mehr dieser Funktionen berücksichtigt.)
TXMLValuesType.AfterConstructionLesen, RegisterChildNode('Value', TXMLValueType); FValue := CreateCollection(TXMLValueTypeList, IXMLValueType, 'Value') as IXMLValueTypeList;damit die Sammlung von Wertelementen (unter dem übergeordneten Values-Tag) vorhanden ist, macht es so schwierig, das leere Values-Tag zu erstellen. Die leere Wert-Liste werden Sie effektiv verhindert , zwingt SaveToFiledas zu produzieren <Values />-tag