例えば、以下のようなXMLを作成する必要があるとする。
<hoge xmlns="http://hoge.co.jp/hoge/Hoge"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://hoge.co.jp/hoge/Hoge hoge.xsd">
xmlnsとschemaLocationを出すには以下のようにする。hoge = Hogeクラスにマッピングしているとする。
1. Hogeクラスのパッケージにpackage-info.javaを作成する。
@XmlSchema(
namespace = "http://hoge.co.jp/hoge/Hoge",
elementFormDefault = XmlNsForm.QUALIFIED
)
package jp.co.hoge;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
2. MarshallerにschemaLocationを設定する
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://hoge.co.jp/hoge/Hoge hoge.xsd");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
これもRESTEasy上でやりたかったが、schemaLocationの出力が無理だった。