2008-09-17 10 views
4

Ich denke über Altova MapForce (oder etwas Ähnliches) nach, um entweder XSLT und/oder eine Java oder C# -Klasse für die Übersetzung zu erstellen. Heute ziehen wir Daten direkt aus der Datenbank und erstellen manuell eine XML-Zeichenfolge, die wir an einen Webservice senden.Mapping interner Datenelemente zum XML-Schema externer Anbieter

Sollte es db sein -> (intern) XML -> XSLT -> (Extern) XML? Was machst du da draußen in der weiten Welt?

Antwort

3

würde ich eine der out-of-the-box-XML-Serialisierung Klassen verwenden, um Ihre interne XML-Generation zu tun, und dann XSLT auf die externe XML zu verwandeln verwenden. Sie können auch ein Schema generieren, um zu erzwingen, dass der Übersetzungscode (was auch immer Ihre XSLT-Übersetzung antreibt) weiterhin den XML-Code erhält, der für die Übersetzung erwartet wird, wenn Änderungen an den Objekten vorgenommen werden.

Es gibt eine Reihe von XSLT-Editoren auf dem Markt, die Sie tun, um die Zuordnungen helfen, aber ich lieber nur einen regulären XML-Editor verwenden.

1

ya, ich denke, Sie sind mit MapForce auf dem richtigen Weg. Wenn Sie keinen Code schreiben möchten, um die eigentliche Transformation durchzuführen, kann MapForce dies auch für Sie übernehmen. Dies kann langfristig besser sein, es ist weniger Code zu pflegen.

Vermeiden Sie teurere Optionen (z. B. BizTalk), es sei denn, Sie müssen wirklich B2B-Integration und Orchestrierung.

+0

Ja, BizTalk ist viel zu teuer, obwohl wir in der Tat einige der Funktionalität (denke ich) verwenden könnten.Es scheint * wie XSLT eine nette Mittelweglösung zu sein. Aber ich muss einige Perf-Tests machen. Unsere Quell-XML ist relativ klein. – BryanB

0

Welche Datenbank benutzen Sie? Oracle hat einige nette XML-Mapping-Tools. Es gibt einige Java-Bindungswerkzeuge (eines ist http://java.sun.com/developer/technicalArticles/WebServices/jaxb). Wenn Sie Luxory haben, sollten Sie Ruby verwenden, das über nette "to_xml" -Methoden verfügt.

+0

wir verwenden Sql Server 2005. Wir sind in erster Linie ein CF-Shop mit einigen Tendenzen zu .NET in naher Zukunft. – BryanB

0

Tipp # 1: Vermeiden Sie jegliche Nutzung von XSLT.

Die Werkzeugunterstützung saugt. Die resultierende Lösung wird nicht mehr erreichbar sein.

Tipp # 2: Beseitigen Sie alle unnötige Schritte.

Übersetzen Sie einfach Ihre Ergebnismenge (unter der Annahme, dass Sie JDBC oder equiv verwenden) zu der ausgehenden XML.

Tipps # 3: Angenommen, jede Verwendung eines schema-basiertes Tool falsch und entsprechend planen zu können.

Mit anderen Worten, nur gefälschte es. Wenn Sie einige mutierte SOAP (redundante, ich weiß) Nutzdaten ausspucken müssen, simulieren Sie einfach eine funktionierende SOAP-Nachricht und wandeln sie dann in eine Vorlage um. Die Geschwindigkeit lutscht nicht.

Das heißt, die beste/richtige Antwort ist, eine "XML Writer" -Stillösung zu verwenden. Es gibt ein paar.

Das Beste ist das, das ich schrieb, LOX (Lightweight Objects for XML).

Die öffentliche API verwendet ein Builder-Entwurfsmuster. Aufgrund der Magie unter der Haube ist es unmöglich, fehlerhaftes XML zu erstellen.

Bitte beachten Sie: Wenn XML die Antwort ist, haben Sie die falsche Frage gestellt. Manchmal sind wir gegen unseren Willen, es irgendwie zu benutzen. In diesem Fall müssen Tools verwendet werden, die den Entwickleraufwand minimieren und die Wartbarkeit des Codes verbessern.

+0

re: "Wenn XML die Antwort ist" - beziehen Sie sich hier auf die Verwendung von XML als intermediäres, internes Format für unsere Daten oder als Ausgangsformat? Wenn das letztere, dann ja, wir sind gezwungen, es zu benutzen. xml als intermediate ist wahrscheinlich ich suche Flexibilität und traf die YAGNI-Wand ... – BryanB