2009-03-08 7 views
7

Ho generato alcune classi C# da un XSD utilizzando l'utilità XSD di Visual Studio e ha generato matrici per l'archiviazione di una raccolta di elementi, piuttosto che una raccolta generica incorporata <T> (o relative) classi.Strumento XSD di Visual Studio: genera raccolte piuttosto che matrici

Nessuno dei parametri della riga di comando menzionati in xsd /? menzioni tutto sulla generazione di raccolte piuttosto che sugli array, ma so che questo può essere fatto con le classi proxy dei servizi Web generate da Visual Studio, quindi ho pensato che fosse possibile.

Qualcuno sa come utilizzare l'utilità XSD per generare classi di raccolta anziché array?

+0

Puoi trovare la mia risposta qui -> http://stackoverflow.com/a/24557248/1125467 – vivekp

risposta

1

Il problema è che XSD è XML - linguaggio indipendente. Non può utilizzare nulla da Java o C# che l'altro non supporta. Gli array sono il minimo comune denominatore.

Gli sviluppatori Java utilizzano librerie OXM come XStream per eseguire il marshalling di oggetti su XML e viceversa. Permette di specificare i tipi personalizzati quando si passa da oggetti a XML. Sembra che dovrai trovare qualcosa di simile nella toolbox .NET.

Questa non è una risposta alla tua domanda, ma è il motivo per cui penso che XSD non farà il lavoro. Come uno sviluppatore Java che raggiunge XStream, dovrai cercare altrove.

1

Hai visto la possibilità di utilizzare raccolte con riferimenti di servizio, non con riferimenti Web. Guarda invece l'utility svcutil.exe. Sembra come svcutil/t: codice file.xsd potrebbe fare questo per te.

1

Non sono a conoscenza di strumenti disponibili in questo momento che lo facciano in modo affidabile, sfortunatamente.

C'è stato un XSDObjectGen (o qualcosa di simile), ma tale strumento sembra essere scomparso dalla faccia della cyberspazio :-(

Ho visto un approccio utilizzare XSDTidy di applicare una sorta di sostituzione di tutte int [] nella lista sopra l'uscita dello strumento XSD - sembra aver funzionato, ma sembrava un po 'goffo

Ecco un CodeProject article on XSDTidy

la cosa che ho cercato di trovare ancora una volta è un post sul blog di.. un gentiluomo che ha sostanzialmente sezionato il funzionamento interno di XSD in Reflector, e poi ha usato le conoscenze che ha acquisito in merito Costruisci il suo strumento, usando molte classi di base .NET. Se ricordo bene, era this blog post here ("writing your own xsd.exe"). Mike non sta facendo esattamente ciò che stai cercando (creando List invece di array), ma potrebbe essere un punto di partenza.

Marc