2012-04-08 15 views
1

XML応答XMLは、私が映画や映像のためのPOJOクラスを作成している

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <Film> 
    <film_id>1</film_id> 
    <title>ACADEMY DINOSAUR</title> 
    <description>xxx</description> 
    <length>86</length> 
    <image_id>1</image_id> 
- <image> 
    <image_id>1</image_id> 
    <name>1.jpg</name> 
    <size>408307</size> 
    <type>.jpg</type> 
    <content>base64 byte</content> 
    </image> 
</Film> 

オブジェクト。

Film.java

public class Film { 
    private String film_id; 
    private String title; 
    private String description; 
    private String length; 
    private String image_id; 
    private Image image; 
//setter and getter methods 
} 

Image.java

public class Image { 
    private int image_id; 
    private String name; 
    private int size; 
    private String type; 
    private byte[] content; 
//setter and getter methods 
} 

私はこれに新しいですし、私はJAXBを使用する必要があります助けてください。

溶液は:

I画像のゲッターメソッドに

@XmlRootElement(name = "film") 
public class Film { 
    private int film_id; 
    private String title; 
    private String description; 
    private int length; 
    private int image_id; 
    private Image image; 
} 

を追加して、Iは@XmlElement(名= "画像")を加えました。

On Imageクラス@XmlRootElement(name = "image")というアノテーションを追加しました。

+0

予想外の要素(URI: ""、ローカル: "映画" )。期待される要素は(none).....これは私が試行したときに得られるエラーです。 public void unmarshaling(String output)throws JAXBException { \t \t InputStream is = new StringBufferInputStream(出力)です。 \t \t JAXBContext jc = JAXBContext.newInstance(Film.class); \t \t Unmarshaller u = jc.createUnmarshaller(); \t \tフィルムフィルム=(フィルム)u.unmarshal(is); – Koushik

+1

コメントを読むのが難しいのではなく、あなたの質問を編集してみませんか? –

答えて

1

仕事にあなたのユースケースを取得するために必要な唯一のものは、Filmクラスに@XmlRootElement注釈を追加することです:

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name="Film") 
public class Film { 
    private String film_id; 
    private String title; 
    private String description; 
    private String length; 
    private String image_id; 
    private Image image; 
} 

ソリューションの他の部分

on the getter method of Image, I have added @XMLElement(name="image").

On Image class I have added an annotation @XmlRootElement(name = "image"), which gives me what I wanted.

のどちらこれらの手順は、特定のユースケースをマップするために必要です。

+0

はい、@ XMLElement(name = "image")は必要ありません。クラスに@XMLElement(name = "image")タグを埋め込んでも警告が表示されます。これは私の出力には影響しませんでした。しかし、このエラーについては何ですか? **警告:重複したクラス定義のバグが発生しましたか?これを報告してください:serviceone/client/entity/Image $ JaxbAccessorM_getContent_setContent_ [B java.lang.ClassFormatError:不正なクラス名 "serviceone/client/entity/Image $ JaxbAccessorM_getContent_setContent_ [B" in class file serviceone/client/entity/Image $ JaxbAccessorM_getContent_setContent_ [B ** – Koushik

+0

@ Koushik - あなたが見ている例外は、JAXBリファレンス実装に固有であり、JAXB(JSR-222)では一般的ではありません。次のリンクで問題を報告することをお勧めします。http://java.net/jira/browse/JAXB/ –

-2

私はバイト[]をご覧として(私のために働いた)dublicatingクラスのリストにあなたの配列を変換

を試してみてください - >リスト<バイト>

+0

リストはお勧めできません。結果のXMLで1バイトあたり1つの要素が生成されます。ほとんどの場合、これはあなたが望むものではなく、XMLのサイズを爆破します。 – MKorsch

関連する問題