Erlsom best practice XSD molto ampia

1

Ho bisogno di una guida per un problema che richiede la convalida di XML su un file XSD molto grande.

Sto facendo uso dell'API XML CSTA (senza SOAP). L'XSD per i messaggi sembra essere un insieme di file molto complesso, compresi l'uno con l'altro. Tutti gli XSD sono "consolidati" in un file di grandi dimensioni csta.xsd ( link ), circa 250 file XSD dispari.

L'uso di erlsom:compile_xsd_file/1 impiega circa 3 - 4 minuti per elaborare il file XSD principale sul mio notebook (con la parte inferiore di una specifica media) (Quad Core 2 GHz, 4 Gb RAM). Quindi la mia idea era di compilare l'XSD nel modello di Erlang e scrivere il risultato in una funzione che restituisce il modello. Questa funzione viene quindi salvata su un file. Questo può essere fatto una volta durante il processo di costruzione. Il problema è che il mio notebook si blocca quando inizia a scrivere il risultato su file (esaurimento della memoria). Questo mi porta a pensare che ovviamente non sto seguendo il modo migliore per farlo.

Il problema è ulteriormente complicato dal fatto che sto usando l'API CSTA specifica di Avaya. Ogni XSD per un singolo messaggio importa l'intero csta.xsd. Posso elaborare un piano intorno a questo una volta che ho le nozioni di base giuste.

Per favore guidami e dimmi il modo giusto di gestire questo tipo di scenario.

    
posta CodeWarrior 21.09.2016 - 15:51
fonte

1 risposta

0

Se l'XSD è troppo grande, non sarai in grado di convalidarlo. L'opzione migliore è di non utilizzare affatto l'XSD, ma basta caricare l'XML in una struttura DOM. Se il documento è valido e ben formato verrà caricato, altrimenti fallirà. Tieni presente che non verrà eseguita alcuna convalida.

Una volta caricato, l'unica cosa che hai è Xml, quindi dovrai interrogare e manipolare manualmente il documento, gli elementi, gli attributi, i nodi, ecc. Siate difensivi quando interrogate poiché non è stata effettuata alcuna validazione.

Potresti provare a creare un modello di dominio dall'Xml, ma probabilmente finirà con centinaia di classi con 1000 di proprietà se l'XSD è grande e complesso come indicato.

    
risposta data 21.09.2016 - 18:09
fonte

Leggi altre domande sui tag