2012-02-01 6 views
1

イメージを含むオブジェクトをjaxbで整列し、その後整列して保存/ロードします。JAXBマーシャリング/アンマーシャリングSWT.ImageまたはAWT BufferedImage

画像を保存する方法はありますか?

私はswt.imageの画像データを記述したバイト配列を返す関数を作成しようとしていますが、私は@XmlElementとしてそれをマークしたら、それを格納する処理は、このような例外をスロー失敗:

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
JAXB annotation is placed on a method that is not a JAXB property 
    this problem is related to the following location: 
     at @javax.xml.bind.annotation.XmlElement() 

また、私はSWT.ImageをAWT.BufferedImageに変換するためにテストしましたが、同じ例外が発生します。

答えて

2

例外は、アクセサ(get/setメソッド)ではないメソッドにアノテーションを配置したことを示します。以下はjava.awt.Imageプロパティを使用した例である:

ルート

package forum9094655; 

import java.awt.Image; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Root { 

    private Image image; 

    public Image getImage() { 
     return image; 
    } 

    public void setImage(Image image) { 
     this.image = image; 
    } 

} 

デモ

package forum9094655; 

import java.awt.Image; 
import java.awt.image.BufferedImage; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Marshaller; 

public class Demo { 

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

     Root root = new Root(); 
     Image image = new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB); 
     root.setImage(image); 

     Marshaller marshaller = jc.createMarshaller(); 
     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
     marshaller.marshal(root, System.out); 
    } 

} 

出力

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
    <image>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mNgYGAAAAAEAAHI6uv5AAAAAElFTkSuQmCC</image> 
</root> 
+0

こんにちはBlaise、私はSWTイメージを使用することが強制され、AWT BufferedImagesを参照するアクセサー関数しか作成できないという問題があります。 JAXBにこれらの関数をルックアップする必要があることを伝える方法はありますか? –

+1

@JosepRodríguezLópez - あなたはJAXBが認識しないすべての型を扱うのに 'XmlAdapter'を使うことができます。 'XmlAdapter'は、JAXBがマップする方法を知らない型から、それが行う型に変換します。 Joda-Timeでこれが行われる例へのリンクがあります:http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html –

関連する問題