2009-07-23 7 views
2

私は、XSDファイルをプログラムで解析してXMLマッピングを生成する方法を考えていました。これにより、XSDファイルをすべて取得し、それに準拠するXMLファイルを解析するパーサーを作成できます。短くなってきた。実行時にXSDファイルを解析する標準Javaユーティリティはありますか?

XSOMは、XSDファイルを解析し、すべての属性を直接的に利用できるようにするため、有望です。

XSDファイルからXMLファイルパーサーを生成するオプションまたは標準ライブラリがありますか?

[結論]あなたのご返信ありがとうございました。本当に助かりました。私は、JAXP、Eclipses EMF、XSOMを使用して実装を記述することができました。

JAXPは非常に簡単で、習得しやすく、やりやすいものでした。 EMFは、実際にはうまくいく痛みでした。スタンドアロンで動作させるためには非常に多くの瓶が含まれていましたが、私はそれを推奨しませんでした。 XSOMはJAXPの実装よりも単純なので、私はそれを最後にしました。

答えて

4

はい、標準的な方法があります。

あなたが探しているのはJAXBです。

+0

XSDファイルを解析できるJAXBへの参照が見つかりません。どのようにこれを行うのかの例やヒントを教えてください。 すなわち、JAXB.parse(新しいファイル( "myxsd.xsd")); – Andrew

+2

あなたはSchemaFactoryクラスを探しています。スキーマファクトリを使用してスキーマをロードし、XMLStreamReaderにスキーマを設定して使用します。いくつかのアイデアを得るためにhttp://myarch.com/using-xml-validation-framework-with-web-servicesを見てください。 バインディングを生成したい場合は、独自のコードを記述しないでください。JAXBとJAX-WSは、XSDから直接バインディングを生成できます。 Java EEチュートリアル(http://java.sun.com/javaee/5/docs/tutorial/doc/)を参照して、これがどのように行われているかの例を入手してください。 –

2

は、JavaオブジェクトにXMLをバインドするために何かを見ている場合は、いくつかの選択肢があります。

  • JAXBWikipedia
  • Castor - "非標準"(しかし、OSS)のアプローチは、
  • JaxMe - JAXB標準のApacheの実装
+1

これらは、マーシャラーを生成するために事前にXSDを定義する必要があります。実行時にXSDを読んでat at marshallersを作成する方法はありますか? – Andrew

+0

私は、あなたがそれをどうやって行ったかにかかわらず、あなたの部分に手作業でコーディングすることになると思います。何らかのマッピング定義なしで実行時にオブジェクトスキーマにXMLピースをマップする方法をどのように知っていますか?多分あなたは動的なもの(GroovyのDOMCategoryのようなもの)を探していますか? – jsight

+0

スキーマを使用して実行時にコンパイラをオブジェクト化することは、実際には意味をなさないでしょう。この種の技術は、XMLとのマーシャリングとアンマーシャルを行うためにコーディングできるオブジェクトの作成を容易にするためのものです。元のポスターがJDKのXOM、JDOM、またはW3C DOMを調査する必要があるようです。 – laz

0

私の個人的なお気に入りは、Apacheのです。
XSDに基づいてパーサー、ライター、および検証者を含むJarファイルを作成できます。

+0

スクリプトを実行してjarを生成し、それを実行時にプルするのは複雑です。これは、既知のXSDファイルがある場合のみです。 – Andrew

+0

「オンザフライ」解析では機能しません。作成されたBeanは実際にはコンパイル時にのみ役立ちます。 – Stroboskop

1

私は過去にXMLスキーマを解析するためにEclipse XSDライブラリを使用しました。 http://eclipse.org/modeling/mdt/?project=xsd、それは非常にstraighforwardを使用することが判明したjarファイルのトンが降っているが、あなたは実行時に解析のためにそれらの5つだけ必要となります。

+1

私はあまりにも長い時間前にそれを使いました。それはかなり良い...私の最大の問題は、私が正しく覚えていれば、当時のスキーマの理解が不足していたこと(抽象スキーマと具体的なスキーマに関するもの)でした。私が "http://eclipse.org/modeling/mdt/?project=xsd"を見ると、3/4文字の略語がまとめられているように見えます;-) –

関連する問題