ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Accessで書き出したXMLスキーマをJavaのクラスに変換する


「MySQLのテーブルをJavaのクラスに変換し、DBの内容をXMLへ読み書き 」計画

  (1)MySQLをインストール(あたりまえっす)
  (2)MySQLをGUIツールを使って、テーブル作成、データ追加
  (3)Accessで読み込めるよう、MySQLをODBC接続
  (4)Accessで読み込み、XML&XSD出力
   4-1、AccessからMySQLのデータベースをODBC接続する
   4-2、AccessのデータベースをXML&XSD出力する
       ←いまここ
  (5)xjc.exeをつかって、XSDから、Javaのクラスを作成
  (6)JavaからMySQLを扱えるようJDBC接続
  (7)プログラム作成

で、XMLスキーマを作ったので、
今日は、「(5)xjc.exeをつかって、XSDから、Javaのクラスを作成」です。

ただ、すでに
DTDからJAXBを使って、JAVAのクラスをつくるまで
http://blog.goo.ne.jp/xmldtp/e/5978535d27dec44998df7acdd74d671c

で、DTDでは、やっています。XSDでは、引数が変わるだけです。
なんですが、後々の作業のために、やっておいたほうがいいことがあるので、それも今回は付け加えます。




■前提条件

・XMLスキーマを用意する
 作ってない人は
Accessから、XMLとXMLスキーマ(XSD)を書き出す。
http://blog.goo.ne.jp/xmldtp/e/c5d1b726adc95a6daf9221cfcb1cc160

を参照。

 そのXSDファイル、今回はCドライブに/tempというフォルダを作成し、そこにおきます(/temp/dept.xsd)。

・Javaホームのbinに、xjc.exeというファイルがある
 C:/Program Files/Java/jdk1.6.0_12/binなど、JavaのHOMEに、xjc.exeというファイルがあることが前提です。
 このコマンドを使いますので。
 ない人は
DTDからJAXBを使って、JAVAのクラスをつくるまで
http://blog.goo.ne.jp/xmldtp/e/5978535d27dec44998df7acdd74d671c

を参照。




■実行!

では、実行します。

(1)スタート→すべてのプログラム→アクセサリ→コマンドプロンプト

 などをつかって、とにかく、「コマンドプロンプト」を出してください。

(2)JAVAのホームの下のbinに、cdしてください
  cd C:/Program Files/Java/jdk1.6.0_12/bin
  など。

  なお、前にも書きましたが、XSDファイル(今回はdept.xsdを使います)は、/tempにコピー

(3)コマンドプロンプトから、

 xjc /temp/dept.xsd -d /temp

 と入力、実行します(DTDのときは、-dtdとつけましたが、入力ファイルはXMLスキーマがデフォルトなので、XMLスキーマの場合は、そのままファイル名を入力してかまいません。また、/でなく、半角円マークでももちろんOKです)

 そうすると、コンソール画面に、

parsing a schema...
compiling a schema...
generated\Dataroot.java
generated\Dept.java
generated\ObjectFactory.java

とでて、/tempフォルダの下にgeneratedというフォルダができます。その下にJavaのクラスがあります。




■後々の作業のために

 で、これでできたのですが、後々の作業のために、しておいたことがいいことがあるので、
 それをついでにしてしまいます。

 このままだと、テーブル1つだけしか使わないときはいいのですが、
 複数テーブル作ると、こまります。
 みんなgeneratedの下にはいってしまい、ObjectFactoryが上書きされます。
 そこで、パッケージ名を変えます。
 そのため、

・まず、フォルダの名前を、generatedから好きな名前に変えます。
 今回は、テーブル名にします。なので、deptに変えます。

・中にあるそれぞれのファイル
  Dataroot.java,
  Dept.java,
  ObjectFactory.java
をひらき、

package generated;

という行を探して、そこのgeneratedを先ほどつけた名前、今回の場合はdeptなので、

package dept;

という行に書き改め、保存します。

これだけです。くれぐれも、「generated」を「すべて置換」”しないように”してください
(generatedという項目があるので、これまで変わってしまいます)




こんなかんじです。
次回からいよいよ、プログラムに入ります。
。。って、その前に下準備がいるんだった・・・