谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

JAXBで名前空間が上手く設定できました。

http://d.hatena.ne.jp/cero-t/20090317/1237305128
↑このエントリーの続き。とりあえず問題が解決しました。


全てのXML要素にPrefixをつけるには、以下の2つのアノテーションを指定する。


package-info.javaは、こんな感じ。

@javax.xml.bind.annotation.XmlSchema(
    elementFormDefault 
        = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package hoge;


任意の文字列のPrefixをつけるには、(JAXB RI 2.0.5では)Marshaller#setPropertiesで
キーに、com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper.PROPERTYを指定して、
値に、com.sun.xml.internal.bind.marshaller.NamespacePrefixMapperをextendsしたクラスを渡す。


NamespacePrefixMapperをextendsしたクラスでは、

String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix)

を実装する。
ここで、自分のつけたいprefixをreturnすればOK。


人に相談すれば自己解決する、の法則でした。