XML解组到java对象

时间:2012-04-08 20:06:56

标签: java xml jaxb unmarshalling

XML响应

    <?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和Image创建了pojo类。

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。

SOLUTION:

我添加了

@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;
}

在Image的getter方法上,我添加了@XMLElement(name =“image”)。

在Image类中,我添加了一个注释@XmlRootElement(name =“image”),它给了我想要的东西。

2 个答案:

答案 0 :(得分:1)

让您的用例工作所需的唯一方法是在@XmlRootElement类上添加Film注释:

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;
}

解决方案的其他部分

  

在Image的getter方法上,我添加了@XMLElement(name =“image”)。

     

在Image类中,我添加了一个注释@XmlRootElement(name =   “image”),它给了我想要的东西。

映射特定用例不需要这些步骤。

答案 1 :(得分:-2)

尝试将数组转换为复制类列表(为我工作)

我看到byte [] - &gt;列表&lt; BR&GT;