JAXBを使って、xml文字列をJavaオブジェクトとして扱う方法。
Trangのプロジェクトページ
ここから最新のtrang-*.zipをダウンロードして解凍。解凍したフォルダにあるtrang.jarを使う。
%JAVA_HOME%\binにパスが通っている前提で、次のコマンドを実行。
C:\trang>Java -jar trang.jar -I xml -O xsd XMLファイル.xml 出力されるXSDファイル.xsd
%JAVA_HOME%\binにあるxjcコマンドを使う。
C:\trang>xjc 出力されるXSDファイル.xsd
xjcを実行したフォルダにgenarateフォルダが作成され、その中にクラスファイルが生成される。
生成されたクラスファイルをJavaソースフォルダ内の適当なpackageにコピーする。
以下のようにbatファイルにしておくと便利。
@echo off rem XMLファイルからJAXB2.0で使用するスキーマファイルを作り、そのスキーマファイルからJavaクラスを生成する。 @echo on .\trang-20081028\trang.jar -I xml -O xsd .\contract.xml .\contract.xsd xjc .\contract.xsd -p jp.co.scratchsoft.basil.demodata.entity.contractXml -d ..\src
final String xml = "<XmlRoot><value></value></XmlRoot>"; JAXBContext jc = JAXBContext.newInstance(XmlRoot.class); StringReader reader = new StringReader(xml); Unmarshaller u = jc.createUnmarshaller(); XmlRoot root = (XmlRoot) u.unmarshal(reader);
// XmlRoot root を更新する。 StringWriter writer = new StringWriter(); Marshaller mu = jc.createMarshaller(); mu.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true)); mu.marshal(root, writer); String xml = writer.toString(); //見やすくフォーマットされたXML形式の文字列を取得できる。