2008-09-17 13 views
4

私はAltova MapForce(または類似のもの)をXSLTまたはJavaまたはC#クラスのいずれかを使って翻訳することを検討しています。今日、私たちはデータベースからデータを取り出し、手動でWebサービスに投稿するXML文字列を作成します。内部ベンダーのXMLスキーマへの内部データ要素のマッピング

XML - >(内部)XML - > XSLT - >(外部)XMLですか?幅広い世界であなたは何をしていますか?

答えて

3

私は、すぐに使用できるXMLシリアル化クラスの1つを使用して内部XML生成を行い、次にXSLTを使用して外部XMLに変換します。また、スキーマを生成して、翻訳コード(XSLT変換を実行するもの)が、オブジェクトの変更が発生した場合に翻訳が期待されるXMLを取得し続けるように強制することもできます。

市場には、マッピングを行うのに役立つ多くのXSLTエディタがありますが、私は通常のXMLエディタを使用する方が好きです。

1

ya、私はMapForceで正しい道を進んでいると思います。実際の変換をプリフォームするコードを書いたくない場合は、MapForceでもそれを行うことができます。これは、より良い長期的なb/cを維持するコードが少なくなる可能性があります。

実際にB2Bの統合とオーケストレーションが必要な場合を除き、より高価なオプション(例:BizTalk)を避けてください。

+0

確かに、BizTalkはあまりにも高価ですが、実際には私たちはいくつかの機能を使うことができました(私は思っています)。* XSLTは素晴らしい中間地の解決策です。しかし、私はいくつかのperfテストを行う必要があります。私たちのソースXMLは、サイズが比較的小さいです。 – BryanB

0

どのデータベースをお使いですか? Oracleには素晴らしいXMLマッピングツールがいくつかあります。いくつかのJavaバインディングツール(1つはhttp://java.sun.com/developer/technicalArticles/WebServices/jaxbです)があります。しかし、もしあなたがluxoryを持っていれば、うまく組み込みの "to_xml"メソッドを持つRubyの使用を検討してください。

+0

私たちはSql Server 2005を使用しています。私たちは主にCFショップであり、近いうちに.NET向けに少し傾いています。 – BryanB

0

ヒント#1:XSLTをすべて使用しないでください。

ツールサポートがうまくいきます。結果として生じる解決策は維持できなくなります。

ヒント#2:不要な手順をすべて削除します。

アウトバウンドXMLに結果セットを変換するだけです(JDBCまたはequivを使用していると仮定します)。

ヒント#3:スキーマベースのツールをすべて誤って使用すると想定し、それに応じて計画します。

つまり、ただそれを偽造してください。いくつかの突然変異したSOAP(冗長な、私は知っている)のペイロードを飛ばして、動作中のSOAPメッセージを模擬して、それをテンプレートに変換してください。ベロシティは吸いません。

これは、最高の/正解は、 "XMLライター"スタイルのソリューションを使用することです。いくつかあります。

私が書いたのは、LOX (Lightweight Objects for XML)です。

公開APIはBuilderデザインパターンを使用します。フードの下でいくつかの魔法のため、不正な形式のXMLを作成することは不可能です。

注: XMLが答えの場合、間違った質問をしました。時々、私たちは何らかの形でそれを使用する意志に反して強制されます。その場合、開発者の作業を最小限に抑え、コードの保守性を向上させるツールを使用することが重要です。

+0

re: "xmlが答えの場合" - データの中間形式、内部形式、または送信形式としてのxmlの使用をここで参照していますか?後者、それでは、私たちはそれを使うことを余儀なくされます。中間体としてのxmlはおそらく柔軟性を求めてYAGNIの壁に当たっています... – BryanB