2011-08-10 10 views
2

XSDファイルと対応するXJCファイルがほとんどありません。 JAXBを使用して生成されたすべてのXMLファイルのバージョン番号は統一されていなければならず、XJCまたはjaxb.propertiesファイルから取得する必要があります。 JAXBはXMLバージョン番号を見つけることができません。デフォルトで1.0を生成しています。JAXBでマーシャリングしながら1.0以外のXMLバージョンを生成する方法

+1

XMLのための2つだけの法的バージョン番号があります。1.0と1.1。あなたが1.1を生成したいという正当な理由はありますか?あるいは、おそらくXML宣言のversion属性の目的を誤解していますか? –

答えて

0

基本的には、プロパティを使用して、フラグメントモードにJAXB Marshallerを設定する必要があります。次に、XMLヘッダーを自分で記述します。次の例は、これがStAX経由でどのように行われるかを示しています。

デモ

package forum7009289; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Marshaller; 
import javax.xml.stream.XMLOutputFactory; 
import javax.xml.stream.XMLStreamWriter; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Root.class); 

     Root root = new Root(); 

     Marshaller marshaller = jc.createMarshaller(); 
     marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); 

     XMLOutputFactory xof = XMLOutputFactory.newFactory(); 
     XMLStreamWriter xsr = xof.createXMLStreamWriter(System.out); 
     xsr.writeStartDocument("1.1"); 
     marshaller.marshal(root, xsr); 
     xsr.writeEndDocument(); 
    } 

} 

ルート

package forum7009289; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Root { 

} 

出力

<?xml version='1.1' encoding='UTF-8'?><root/> 
関連する問題