2009-07-05 13 views
6

Sto usando il seguente comando per generare il file xsd correlato dal mio file XML di input - response.xml, la mia confusione è (1) perché ci sono due output di file xsd (response.xsd e response_app1.xsd), penso che dovrebbe essere solo uno di loro generato? (2) Se ho bisogno di generare un file di classe C# usando xsd/classes, quale file xsd dovrei usare?Perché XSD.EXE crea due file .XSD e come utilizzarli?

Ambiente personale: VSTS 2008 + C# + .Net 3.5.

D:\>xsd response.xml 
Microsoft (R) Xml Schemas/DataTypes support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Writing file 'D:\response.xsd'. 

Ecco il mio file di input XML e output file XSD,

http://www.mediafire.com/file/kzzoxw0zwgq/inputoutput.zip

EDIT 1:

quando eseguo response.xsd XSD per generare correlate C# classe, ci sono errori messaggi, ed ecco l'output dettagliato,

D:\>xsd response.xsd /classes 
Microsoft (R) Xml Schemas/DataTypes support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Schema validation warning: The 'http://www.mycorp.com/Order/2009/05/mex:Items' e 
lement is not declared. Line 10, position 16. 

Warning: Schema could not be validated. Class generation may fail or may produce 
incorrect results. 

Error: Error generating classes for schema 'response'. 
    - The element 'http://www.mycorp.com/Order/2009/05/mex:Items' is missing. 

If you would like more help, please type "xsd /?". 

grazie in anticipo, George

risposta

1

IIRC, si utilizzano entrambi, uno farà probabilmente riferimento all'altro.

+0

@leppie, 1. quando eseguo response.xsd XSD per generare correlate classe C#, ci sono i messaggi di errore. Ho postato nella mia post originale EDIT 1 sezione. Qualche idea, cosa c'è che non va? 2. "uno farà probabilmente riferimento all'altro" - come lo provi? – George2

2

Il motivo per cui vengono generati due file è perché il tuo XML contiene due spazi dei nomi XML; ogni XSD generato corrisponde a uno spazio dei nomi. Quello per lo spazio dei nomi dell'involucro di sapone importa lo spazio dei nomi mycorp (che puoi vedere dall'elemento xs: import).

+0

La mia confusione è, perché un file XSD potrebbe contenere solo uno spazio dei nomi? – George2

+0

Un'altra confusione è che ci sono 4 spazi dei nomi, sono xmlns: soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: xsd = "http://www.w3.org/2001/XMLSchema" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" e mycorp namespace, perché hai detto che ci sono solo 2 namespace? – George2

+1

Mentre quegli altri spazi dei nomi sono dichiarati nel documento XML, nessun elemento li usa effettivamente. – Jacob

5

George,

per generare classi da questi file, è necessario elencare sia sulla riga di comando:

D:\>xsd response.xsd response_app1.xsd /classes 

E 'già stato giustamente detto che i due file .xsd sono causa c'erano due spazi dei nomi XML nel tuo file XML originale. A proposito, sto indovinando un po 'qui perché non hai pubblicato il file XML.

+0

Grazie, perché ci sono due file xsd generati diversi da uno? E quali sono le diverse funzioni dei due file? – George2

+0

BTW: la soluzione funziona. Qualche commento o idea al mio quesiton sopra? :-) – George2

-2

Sì, rimuovere gli spazi dei nomi dal file XML e generare esso, si otterrà un singolo file XSD

Problemi correlati