Sto lavorando a un progetto che riguarda un back-end Java con front-end Delphi. Sto tentando di generare associazioni XML basate su un file .xsd in java. L'XSD contiene un oggetto chiamato TaskList che ha item Tasks. Task è un elenco di attività. Quando creo i collegamenti XML Delphi tenta una funzione CreateCollection() utilizzando TXMLTaskList ma genera un errore perché TXMLTaskList è IXMLNode invece di IXMLNodeCollection.Il file di generazione dei bind XML non viene compilato
Sono ancora nuovo nell'usare i file XSD e la funzione di generazione dei bind XML, ma sulla base di quel poco che capisco stavo assumendo poiché TaskList contiene un singolo oggetto Task che non dovrebbe essere utilizzato nella funzione CreateCollection, Penserei che i compiti che è una lista di attività dovrebbero essere usati.
Questa è la linea che il mio file di binding XML sta gettando un errore:
FExportOnClientChange := CreateCollection(TXMLTaskList, IXMLTask,
'exportOnClientChange') as IXMLTaskList;
Questo è il mio TXMLTaskLisk, dimostrando che si tratta di un TXMLNode invece di TXMLNodeCollectionClass che CreateCollection sta cercando.
type
TXMLTaskList = class(TXMLNode, IXMLTaskList)
protected
{ IXMLTaskList }
function Get_Tasks: IXMLTasks;
public
procedure AfterConstruction; override;
end;
Nei miei tentativi di capire il problema che ho notato che se faccio TaskList una lista illimitata di compiti e lasciare i compiti come una lista illimitata di compiti che tutto genera bene nel file Delphi XML, ma che avrebbe significa che ho una lista di una lista che non è quello che sto volendo.
Una cosa che potrebbe essere difficile dire qui è che TaskList e le attività sono in diversi file XSD anche se sono collegati.
<complexType name="TaskList">
<sequence>
<element name="tasks" type="struct:tasks"></element>
</sequence>
</complexType>
<complexType name="tasks">
<sequence>
<element ref="struct:task" maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>