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

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

XMLからJavaに変換する話とか、JAX何とかのまとめとか(JAXPとJAXBの違いとか)

 いきなりですが、JAXなんとかとつく(JAXPとかJAXBとか)ののまとめです。
 @ITのここのページに載ってました。
 結局、こうなるみたい。

JAXなんとかのまとめ

JAXPXML文書を読み書き
JAXMSOAPのメッセージ用API
JAXBXMLとJavaのバインディング
JAXRUDDIのようなXMLレジストリアクセスAPI
JAX-RPCWebサービスを構築するためのAPI

*バインディング:「オブジェクトをマッピング」するって、具体的にはXMLとJavaを対応づける

で、表題のXMLからJavaに変換するには、普通JAXBの話になる。




JAXBでJavaのクラスを作るにはXMLのスキーマ必要

 で、JAXBのはなし。
 JAXBについては、ここに書かれているように、

・XMLのスキーマ構造からJavaのクラスに変換するxjc
・XMLのインスタンスとJavaのインスタンス間の変換を行うマーシャル・アンマーシャル

になる(そのページの図がわかりやすいと思います)

そのため、たとえば、開発のときにドキュメントからJavaのクラスを自動生成するために、JAXBを使おうとすると、ドキュメントからXMLのスキーマ構造に変換して、(xjcを使って)Javaのクラスを作ることになる。
 ところが、XMLのスキーマ構造である、XMLSchemaとか、DTDとか(Relaxも使えるのかな?)とかは、書くのがめんどっちい。
 目からビームが出るほどだ(でないでない)

 なんで、気軽にできない。
 とくに、手書きで書いてもらうことなんてできない。
 だから、ドキュメントからJavaで自動変換してもらうのは、どーなのどーなのと思ってた。




JAXPは、XMLのインスタンスを読み込み、展開する


 でも、ちょっとまてよ!と気づいた。

 JAXPを使えば、XMLのスキーマがなくても、インスタンスだけ読み込んで、そのままDOMとして展開できる。
 っていうことは、

(1)JAXPを使ってXML文書をDOMで読み込み
(2)読み込んだ内容をもとに、ファイル入出力で、JAVAのクラスを書き出せばいいじゃん


 そっかそっか、きっと、みんな、そーやってるのね(^^;)




 でも、ウィリアムのいたずら、JavaでDOMをつかったことないんですう。
 Access VBAなんかだとあるけど(その成果はこちら)
 つーことで、一度にはできないので(べつに、ネタを出し渋っているわけではない。いくら、本家が、乙部綾子さんネタで、何度も分けて書いてるからって、ここもそれを狙って。。。??いないっす)、これから数回にわけて、JAXPからXMLからJavaに変換するプログラムのお勉強を公開したいと思います。