17

問題は、system.out の代わりに XML ファイル出力を生成する方法です。

package jaxbintroduction;

import java.io.FileOutputStream;
import java.io.OutputStream;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        itemorder.Book quickXML = new itemorder.Book();

        quickXML.setAuthor("Sillyme");
        quickXML.setDescription("Dummie book");
        quickXML.setISBN(123456789);
        quickXML.setPrice((float)12.6);
        quickXML.setPublisher("Progress");
        quickXML.setTitle("Hello World JAVA");

        try {            
            javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(quickXML.getClass().getPackage().getName());
            javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
            marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
            marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.marshal(quickXML, System.out);
            OutputStream os = new FileOutputStream( "nosferatu.xml" );
            marshaller.marshal( quickXML, os );

        } catch (javax.xml.bind.JAXBException ex) {
            // XXXTODO Handle exception
            java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
        }
    }

}
4

4 に答える 4

16

java.io.FileJAXB 2.1 以降を使用している場合は、オブジェクトに直接マーシャリングできます。

 File file = new File( "nosferatu.xml" );
 marshaller.marshal( quickXML, file );

対応するJavadoc

于 2012-12-10T19:36:18.640 に答える
8

あなたはすでに にマーシャリングしていnosferatu.xmlます。次の行を削除またはコメントするだけです。

marshaller.marshal(quickXML, System.out);

出力を表示して閉じたくない場合OutputStream

os.close();
于 2012-12-09T15:09:33.690 に答える
2

Marshaller#marshall(...)メソッドは、パラメータとして OutputStream または Writer を取ります。見れば、API でこれを見つけることができたはずです。

于 2012-12-09T15:09:51.800 に答える