was ist die beste Art und Weise der Erzeugung eines xsd einer XML-Probe gegeben zu automatisieren?

stimmen
0

Ich habe ein Stück von XML-Daten, die aus einer Datenbank kommen, die ich brauche für eine XSD zu erzeugen. Verstanden arbeiten alle xsd.exe verwenden, aber alle Elemente als String zeigt sich, auch Dinge wie 2079,0200. Wie erhalte ich xsd.exe an Arten zu erraten? Würde die XmlSchemaExporter Klasse in der Lage sein, dies zu tun?

Das Problem hierbei ist, dass Visual Studio ist die XSD erzeugen, die ich (mit Dezimaltypen usw.) werden soll, wenn ich die XML verwenden -> Erstellen Schema Befehl, aber ich mag nicht, dies tun muß von Hand. Ich gründe einen Prozess auf, der in einem Stück xml nimmt und eine XSD. Aber es muss mehr Arten als nur „string“.

Ähnlicher, aber nicht wissen , ob es eine Lösung ist noch (XmlSchemaInference Klasse): Alle Tools ein XSD - Schema aus einem XML - Instanzdokument zu generieren?

Veröffentlicht am 30/12/2009 um 03:44
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Die Lösung ist das Schema von Hand zu erstellen, basierend auf dem einen, das erzeugt worden ist. Dann läuft xsd.exe nicht wieder.

Beantwortet am 30/12/2009 um 03:47
quelle vom benutzer

stimmen
0

John Antwort gilt für Situationen, in denen Genauigkeit wichtiger als Geschwindigkeit. Für meine Situation musste ich viele Schemata, die identisch waren, was würde über das VS „Create Schema“ Befehl erzeugt werden. So war die Genauigkeit nicht so wichtig wie eine bekannte Basislinie und Geschwindigkeit entspricht.

Dies ist, was ich am Ende tun. Es produzierte Ausgabe identisch mit dem VS „Create Schema“ Befehl:

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();
Beantwortet am 30/12/2009 um 18:04
quelle vom benutzer

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