2009-04-02 26 views
2

dom4jを使用してxmlファイルからデータベースにデータをインポートするプログラムを作成しました。それは、Javaでラップされた一連のxpathステートメントとして終わります - それはうまくいきますが、これを行う良い方法があると強く感じています。xmlをデータベースにインポートする最良の方法(javaを使用)

xmlからdbにデータをインポートする好ましい方法は何ですか?

答えて

4

JAXB(これはJava SEの標準の1.6です)は、それを処理する最も簡単な方法です。 XML構造に似たクラスを作成し、フィールドのセッターとゲッターを入れ、クラスの先頭に@XmlRootElementアノテーションを入れてください。次に、

Unmarshaller um = JAXBContext.newInstance(YourClass.class).createUnmarshaller(); 
YourClass input = (YourClass) um.unmarshal(new FileReader("file.xml")); 

のように、XMLファイルをJavaオブジェクトに魔法のように変換します。それから、あなたが選んだDBに書き込むのは簡単なはずです。

+0

JAXbの問題は、xsdが必要だということです。 –

+1

うーん、いいえ。私は上記のコードを正確に使用しており、xdsはありません。構造は上記のクラス(YourClass)として表されます。 –

0

本当にXMLファイルの形式によって異なります。あなたはさらに精緻化できますか?

私の場合、単純なKey-> Valueペア構文がXMLに格納されているアプリケーションがあります。この構文では、DOMを使用してノードを反復し、SQLを生成してデータを挿入します。これを行うために、XPathを使用して

は完全に罰金ソリューション

1

だろう、私は多くの場合、同じ問題を抱えていた、と私は10年前、私が今と同じツールがあればいいのに。

既存のXMLを通常のJavaクラスに読み込む必要がある場合は、マッピングを指定するだけで、apacheダイジェストはdom4jよりはるかにエレガントで使いやすいものと個人的に考えています。

次に、Hibernateを使用して資料をデータベースに書き出します。

0

いくつかの質問がありますが、あなたは何かをしようとする前に自問してみてください。

  • クリーニング、それは価値がありますか?そのアプリケーションがまれにしか使用されない場合は、「壊れていないものを修正しない」。
  • 頻繁に変更される予定ですか?その場合、簡単な保守と読みやすさが最も重要であり、dom4jはおそらくそれに悪いことではありません。
  • のパフォーマンスは重要ですか?違いがなければ、アプリは半分の時間で実行されます。前の項目に戻ると、「良い」と表示されたのはそのような場合です。
2

Simpleは、XMLからJavaオブジェクトを作成するのに非常に使いやすいとわかりました。これを使ってHibernateを使って保存できるデフォルト設定を設定します。

0

これは確かにあなたが何をしているかによって異なります。 XML文書の中からデータを抽出したいと思っています。もしそうなら、xpathはうまくいくかもしれませんが、私は個人的にはデータバインディングがもっと好きです:XMLを読んで、Javaオブジェクトにバインドし、通常のBean/POJOアクセサでデータを取得します。 ORMを使用している場合は、ORM(hibernateのような)が使用できるオブジェクトとの間でバインドする/からバインドします。

私はJAXB、またはXStreamに投票したいと思います。私は、xpathが使われていればどんなDOMの代替も使うつもりです。

関連する問題