Sto lavorando con più oggetti XElement
per fornire alcuni dati specificati dall'utente per diversi oggetti nella mia libreria. Sto cercando di evitare di specificare la struttura dell'intero file XML perché la libreria non dovrebbe preoccuparsi di come sia l'intero XML finché gli elementi specifici di cui ha bisogno sono strutturati correttamente.Convalida schema XML di XElement
A tal fine, ho 3 XSD
file separati che definiscono schema per ognuna delle 3 XElements
mie esigenze di classe, però io sono in esecuzione in alcuni problemi di dimostrare la validità del XElement rispetto allo schema. Non sembra essere un metodo per farlo senza una soluzione alternativa.
Dalla pagina MSDN, il metodo di estensione XElement.Validate()
sembra essere adattato alla convalida dei sottoelementi di un file più grande. L'argomento XmlSchemaObject
causa i miei problemi poiché non posso presumere che sia presente in uno qualsiasi degli XElements
. Penso di poter aggirare questo problema afferrando lo XmlSchemaElement
dal mio XmlSchemaSet
per passare come argomento XmlSchemaObject
, ma poiché lo XmlSchemaSet
definisce già tutto, sembra strano doverlo fare.
Esiste un'opzione migliore per convalidare uno XElement
con uno schema senza prima convalidare l'intero XDocument
?
O dovrei semplicemente lasciare che il livello aziendale gestisca la convalida dello schema nell'applicazione e lasciare che la libreria assuma che lo XElement
sia formato correttamente (ho considerato questa opzione, ma come preferenza personale preferisco evitare di lanciare eccezioni e preferirei semplicemente lasciare il metodo di chiamata sa che XElement
non è valido tramite un parametro di ritorno).
Non ho idea del motivo per cui non ho pensato di avvolgere il codice nel mio metodo di estensione 'XElement.Validate()'. Sembra così logico ora che lo dici. Creare un 'XDocument' è un'altra buona idea che avrebbe dovuto succedere anche a me (ho passato troppo tempo a cercare di capire come convertirlo, e ho perso l'ovvia soluzione). Sperimenterò con entrambi e vedrò quale preferisco. – psubsee2003