2012-02-15 9 views
1

私は、XSDファイルからJavaでオブジェクトツリーを作成する方法を知りたいと思います。これのためのフレームワークはありますか?Javaでxsdからオブジェクトツリーを作成する方法は?

関数のシグネチャはややこれに近いものになります。

TreeSet<Object> convertToTree(File xsdFile); 

ですから、機能convertToTreeは、XSDファイルを読み込み、ツリーコレクションを生成する必要があります見ることができます。

誰かが例を投稿してもらえますか?

答えて

2

この問題では、JAXBを使用できます。 これは私の知る限りNetbeansに統合されています。 NetBeansで

プロジェクトを選択 - >右クリック - > [新しい

選択その他 - >カテゴリ= XML; FileTypes = JAXBバインド

残りの部分は自己説明的でなければなりません。あなたは、XSDで定義された固定のxml-スキームを持っていませんが、XSDファイルで定義されたXMLスキーマの構造を表示したい場合は、次の操作を行うことができ

xsdファイルは常にxmlファイルなので、xsdファイルを記述したxsdファイルを作成する必要があります。 (私は既にxsdファイルのための体系があると確信しています)。次に、上記のようにこのxsdファイルを使用して、他のxsdファイルを整列化および非整列化することができます。しかし、私はこのソリューションをテストしませんでした...

+0

+1 - JAXBもEclipseに統合されています。あなたのXMLスキーマを右クリックし、次に:Generate | JAXBクラス... –

+0

実際には、問題は1つの時間オブジェクトを作成することではありません。私はさまざまなxsdsから入力としてJavaオブジェクトのツリーを生成する必要があります – Anand

+0

これは1つの時間オブジェクトを作成しません。 xsdで定義されたxml構造体を表す一連のクラスを作成します。 JAXB.marshalとJAXB.unmarshalを使用すると、XMLファイルを解析してオブジェクトを作成し、オブジェクトを使用してXMLファイルを作成できます。あなたの基本目的は何ですか?たぶん私はこれを誤解したでしょう。 JAXBの場合は – AlexS

2

コマンドラインから実行できるJDKには、スキーマをパラメータとして渡すことができるユーティリティがあります。これは、スキーマ構造を表すJavaクラスを生成します。次に、これらのクラスを使用して、XMLをJava表現に変換して戻すことができます(JAXBおよびマーシャリング/非マーシャリングを参照)。

5

JAXBまたはXMLBeanのオプションがあります。

あなたはgenerate JAXB classes from an XML schema fileまたは

はこのようにそれを実行してください例を参照する必要がある場合:"%java_home%\bin\xjc" -p [package_name] [xsd_file].xsd

+1

+1です。 JAXBとXMLBeansから生成されたオブジェクトモデルを並べて比較します:http://blog.bdoughan.com/2012/01/how-does-jaxb-compare-to-xmlbeans.html –

0
XMLスキーマ定義(XSD)として、いくつかのelememntタイプを持つことに

とオブジェクトツリーでの作成中に、これらはルート要素であり、 xsdファイル。

このxsdファイルはJAXB(Java Architecture for XML Binding)とJavaBeanクラスで動作すると述べています。これは、setterメソッドとgetterメソッドを使用してBeanクラスを生成し、Beanオブジェクトからデータを取得します。

たとえば、Example.xsdファイルの構造は以下のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema targetNamespace="http://www.project.com/folder/Example" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:vsi="http://www.project.com/folder/Example" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" jxb:version="1.0"> 
    <xs:annotation> 
     <xs:appinfo> 
      <jxb:schemaBindings> 
       <jxb:package name="com.folder.jaxb.beans.example" /> 
      </jxb:schemaBindings> 
     </xs:appinfo> 
    </xs:annotation> 

次に、propertysとその属性で要素を定義します。

次に、antを実行するスクリプトを持つbuild.xmlファイルを作成し、xsdオブジェクトツリーで新しいBeanクラスを生成します。

その後、xml要素でプロジェクトを実行できます。

関連する問題