XMLをJavaオブジェクトに変換する最良の方法は何ですか?
似たような表現のようなものは必要ありませんが、XMLから特定のデータを引き出して、Javaオブジェクトを設定したいと思います。全体的に「下に移動、上に移動」タイプのものです。コンバーターを作成するときは、オブジェクトのようなDOMを好むでしょう...
誰もがJAXBなどの自動ソリューションを愛していることは知っていますが、手作業でコーディングすることをお勧めしますjavax.xml.bind.Marshaller
およびjavax.xml.bind.Unmarshaller
実装は、perm genスペースを不必要にいっぱいにすることなく、必要なものを正確に取得します。 JDOMを使用してXMLを解析し、XPathを使用して値をJavaオブジェクトにマッピングします。一度行うのは多少手間がかかりますが、必要なものだけを手に入れることができます。
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ドキュメントの一部として提供できるようにします。
JAXBはオブジェクトをXMLに変換する最良の方法であり、MOXyは最高のJAXB実装です。
MOXyは次の拡張機能を提供します。
Castor を使用して、XMLをJavaとその逆に簡単に変換できます。
キャスターを使用すると、次のことができます
これがあなたが探しているものかどうかはわかりませんが、 XMLBeans のようなものを使用して、XMLをJavaオブジェクトにバインドできます。残念ながら、それは既存のシステムであり、オブジェクトを操作するだけで、それらを含むライブラリを作成する必要はありませんでした。また、XSDなしでどのように機能するかわかりません(持っているかどうかは言及していませんでした)。