web-dev-qa-db-ja.com

XMLをJavaオブジェクトに変換する

XMLをJavaオブジェクトに変換する最良の方法は何ですか?

似たような表現のようなものは必要ありませんが、XMLから特定のデータを引き出して、Javaオブジェクトを設定したいと思います。全体的に「下に移動、上に移動」タイプのものです。コンバーターを作成するときは、オブジェクトのようなDOMを好むでしょう...

22
DD.

誰もがJAXBなどの自動ソリューションを愛していることは知っていますが、手作業でコーディングすることをお勧めしますjavax.xml.bind.Marshallerおよびjavax.xml.bind.Unmarshaller実装は、perm genスペースを不必要にいっぱいにすることなく、必要なものを正確に取得します。 JDOMを使用してXMLを解析し、XPathを使用して値をJavaオブジェクトにマッピングします。一度行うのは多少手間がかかりますが、必要なものだけを手に入れることができます。

12
duffymo

XMLスキーマがある場合、 [〜#〜] jaxb [〜#〜] はニース-JDKの一部として提供されます。 Javaクラスを生成して、たとえばxjc -p foo myschema.xsd

XMLファイルを読み取り、オブジェクトを取得するには(xjcツールによって生成されたクラスから):

    JAXBContext context = JAXBContext.newInstance(FooObj.class);
    Unmarshaller unMarshaller = context.createUnmarshaller();
    FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));

XMLドキュメントの一部のみをオブジェクトに変換する場合は、同様のことができます。上記のようにファイル全体ではなく、JAXBをDOMドキュメントの一部として提供できるようにします。

24
nos

JAXBはオブジェクトをXMLに変換する最良の方法であり、MOXyは最高のJAXB実装です。

  • JAXBは標準 、Java SE 6に含まれる
  • JAX-WS、JAX-RS、およびSCAの標準XMLバインディングテクノロジー
  • シンプルなランタイム

MOXyは次の拡張機能を提供します。

6
bdoughan

Castor を使用して、XMLをJavaとその逆に簡単に変換できます。

キャスターを使用すると、次のことができます

  1. 簡単な変換:単純なMarshallerとUnmarshallerを使用すると、XMLをJavaに簡単に変換できます。
  2. マッピング:マッピングファイルを作成して、XMLからJavaおよびその逆に変換されるデータの量を制限できます。
4
Tushar Tarkas

Simple が好きで、作業がとても簡単だとわかりました。似たような表現のようなものを生成しますが、あなたが探しているものとはまったく違うかもしれません。

DOMのようなソリューションを探している場合は、 JDom が適切でしょう。

3
Mark

これがあなたが探しているものかどうかはわかりませんが、 XMLBeans のようなものを使用して、XMLをJavaオブジェクトにバインドできます。残念ながら、それは既存のシステムであり、オブジェクトを操作するだけで、それらを含むライブラリを作成する必要はありませんでした。また、XSDなしでどのように機能するかわかりません(持っているかどうかは言及していませんでした)。

2
Thomas Owens