Estoy usando el XML Data Binding Wizardin Delphi XE2. El esquema tiene etiquetas requeridas de este tipo:
<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>
El problema es que si no agrego ningún elemento, por ejemplo, al Values-grupo, no habrá <Values>-etiqueta y el archivo XML fallará la validación contra el XSD. Esto probablemente no sería un problema si la interfaz proporcionara un método para "agregar" la Valuesetiqueta -et.
¿Existe una forma estándar de manejar esto o estoy usando el código generado incorrectamente?
En pocas palabras , ¿hay alguna forma, alternativa o de otra manera, usando el código de Data Binding Wizard, para producir lo siguiente XML(que es lo que se necesita para validar usando el esquema anterior cuando no hay nodos secundarios), dado HeaderType, ValuesTypey EventsTypeson de complexType :
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(Sé que hay otros problemas similares, como el código generado al <xs:sequence>no imponer el orden correcto en el XMLarchivo final , pero al menos para ese, hay una solución simplemente insertando los niños en el orden correcto. Sigo pensando Sería bueno si Embarcaderoproporcionara una interfaz completa, que tenga en cuenta más de estas características).
fuente

TXMLValuesType.AfterConstructionleeRegisterChildNode('Value', TXMLValueType); FValue := CreateCollection(TXMLValueTypeList, IXMLValueType, 'Value') as IXMLValueTypeList;para que exista la colección de elementos de valor (bajo la etiqueta de valores principal), que es lo que hace que sea tan difícil crear la etiqueta de valores vacía. La lista de valores vacía evitará que se obligueSaveToFilea producir la<Values />etiquetaRespuestas:
No estoy seguro de entender, pero quizás lo que está buscando es: use = "optional"
Dime si está bien.
fuente