2009年11月25日水曜日

JAXBの使い方メモ(2009/11/25更新)

最も基本的なアノテーション

次のようなXMLをクラスにマッピングする。

<root-element attr="abc">
    <sub-element></sub-element>
</root-element>

アノテーションのつけ方はこんな感じ。

@XmlRootElement(name="root-element")
public class RootElem {

    @XmlElement(name="sub-element")
    public String subElem;

    @XmlAttribute
    public String attr;
}

インデックスファイル

バインディングしたいクラスのパッケージにjaxb.indexというファイルを作る。
中身はパッケージなしのクラス名を1行に1つずつ書いたテキストファイル。後述のJAXBContextで指定したパッケージからこのインデックスファイルが読まれる。

継承

abstract public class SuperClass {
    @XmlAttribute
    public String name;
}

@XmlRootElement(name="subclassA")
public class SubClassA extends SuperClass {

    public String value;
}

@XmlRootElement(name="subclassB")
public class SubClassB extends SuperClass {

    @XmlAttribute
    public int c;

    @XmlAttribute
    public int value;
}

マーシャリング(XML生成)

// jaxbtext.entityパッケージのクラスを対象にする
JAXBContext context = JAXBContext.newInstance("jaxbtest.entity");
RootElem root = <出力するオブジェクト>
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Writer out = new OutputStreamWriter(new FileOutputStream("output/marshal.xml"), "utf-8");
marshaller.marshal(root, out);
out.close();

アンマーシャリング(XML読み込み)

JAXBContext context = JAXBContext.newInstance("jaxbtest.entity");
Unmarshaller unmarshaller = context.createUnmarshaller();
RootEntity obj = (RootEntity)unmarshaller.unmarshal(new File("output/marshal.xml"));



2009年11月19日木曜日

Flash Player 10.1 ベータ版公開

早速インストールしてみた。

64bit版Windows 7 ではActiveXのインストールに失敗。32ビット版Windows 7 にはインストールできた。

GeForce9400のグラフィックドライバは安定版の191を使っている。Flash Player 10.1のGUアクセラレーションはバージョン195(まだベータ版のみリリース)でサポートされるらしい。

Pluginは64ビット版Windows 7にもインストールできた。

GPUアクセラレーションを有効にしない状態では以前のSWFは問題なく再生されているようだ。

ShaderFilterで任意の位置のピクセルがサンプリングできないという仕様が改善されていることを期待していたのだけど、これは改善なし。