hva er den beste måten å automatisere generering av en xsd gitt en xml prøve?

stemmer
0

Jeg har en del av xml data som kommer ut av en database som jeg trenger å generere en xsd for. Fikk den alle arbeider hjelp xsd.exe men alle elementene er å dukke opp som streng, selv ting som 2079,0200. Hvordan får jeg xsd.exe å gjette på typer? Ville XmlSchemaExporter klassen kunne gjøre dette?

Problemet her er at Visual Studio genererer xsd at jeg vil (med desimaler typer etc) når jeg bruker XML -> Opprett Schema kommando, men jeg ønsker ikke å måtte gjøre dette for hånd. Jeg setter opp en prosess som tar en del av XML og genererer en XSD. Men det er behov for å ha flere typer enn bare streng.

Relatert, men vet ikke om det er en løsning ennå (XmlSchemaInference klasse): Noen verktøy for å generere en XSD skjema fra et XML dokument dokument?

Publisert på 30/12/2009 klokken 00:44
kilden bruker
På andre språk...                            


2 svar

stemmer
0

Løsningen er å skape skjemaet for hånd, basert på det som er blitt generert. Deretter kjører ikke XSD.EXE igjen.

Svarte 30/12/2009 kl. 00:47
kilden bruker

stemmer
0

John svar er gyldig i situasjoner der nøyaktighet er viktigere enn fart. For min situasjon, jeg trengte mange skjemaer som var identisk med det som skulle bli produsert via VS "Create Schema" kommandoen. Så nøyaktighet var ikke så viktig som samsvarer med en kjent baseline og hastighet.

Dette er hva jeg endte opp med å gjøre. Det produseres utgang identisk med VS "Create Schema" kommando:

XmlSchemaInference inf = new XmlSchemaInference();

// xml variable on the next line is a string being passed in
XmlSchemaSet schemas = inf.InferSchema(new XmlTextReader(xml, XmlNodeType.Element, null));
schemas.Compile();

XmlSchema[] schemaArray = new XmlSchema[1];
schemas.CopyTo(schemaArray, 0);
XmlTextWriter wr = new XmlTextWriter(xsdOutputFileNameAndPath, Encoding.UTF8);
wr.Formatting = Formatting.Indented;
schemaArray[0].Write(wr);
wr.Close();
Svarte 30/12/2009 kl. 15:04
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more