使用JAXB和Jersey从其他类生成带有子节点的XML

时间:2015-03-10 10:08:21

标签: java xml xml-parsing jaxb jersey

我尝试使用带有Hibernate的JAXB从Web服务生成XML。

主类是Tabla,它有一个类型为Alumno类的子节点。我需要使用来自Tabla类和子节点Alumno的数据生成XML。

我接受两种可能性: 1.从Tabla数据链接添加XML链接到Alumno XML 2.使用Alumno类中的包含信息向Tabla XML添加子节点(我更喜欢这个)。

我尝试使用此配置的第二个选项但总是从服务器获得错误500:

Tabla类

import java.math.BigDecimal;
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.XmlSeeAlso;

@XmlSeeAlso(Alumno.class)
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "tabla")
@XmlType(propOrder = {"id", "alumno", "fechaInicio" })
public class Tabla implements java.io.Serializable {

    @XmlElement
    private Integer id;
    @XmlElement
    private Alumno alumno;
    @XmlElement
    private Date fechaInicio;

    public Tabla() {
    }

    public Tabla(Integer id,Date fechainicio, Alumno alumno) {
        super();
        this.id = id;
        this.fechaInicio = fechainicio;
        this.alumno = alumno;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Alumno getAlumno() {
        return alumno;
    }

    public void setAlumno(Alumno alumno) {
        this.alumno = alumno;
    }

    public Date getFechainicio() {
        return fechaInicio;
    }

    public void setFechainicio(Date fechainicio) {
        this.fechaInicio = fechainicio;
    }
}

校友课

import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "alumno")
@XmlType(propOrder = {"nombre", "apellidos"})
public class Alumno implements java.io.Serializable {

    @XmlAttribute
    private Integer id;
    @XmlElement
    private String nombre;

    public Alumno() {
    }

    public Alumno(String nombre, String apellidos) {
        this.nombre = nombre;
        this.apellidos = apellidos;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidos() {
        return this.apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }
}

Hibernate配置正常,因为我尝试通过代码获取Tabla的列表,其中包括来自Alumno实体的Alumno信息和Hibernate lazy正确信息。当我尝试将Tabla编组为XML时,问题就出现了。

我也尝试使用XMLAdapter,但我不知道如何实现这些案例。

0 个答案:

没有答案