Jaxb @XmlAttribute

时间:2014-05-08 11:14:10

标签: xml jaxb

我有以下问题。我无法读取每一行的属性样式。 我创建了一个包含“linea”和“style”的类,但如果它是正确的话则不会。

这是要阅读的Xm​​l。

<aviso id="20642227720571316020140523421272">
        <titulo>
                <linea style="12">Etiquetado</linea>
        </titulo>
        <informacion>
                <linea style="13">MONTAR CAJA TIPO: (3) - Caja grande</linea>
                <linea style="14">PEGAR MATRICULA: M142849863</linea>
        </informacion>
        <instrucciones>
                <linea style="15">EMISION DE ETIQUETA EN CURSO...</linea>
        </instrucciones>
</aviso>

这是通用的类java

public class TextosMensaje {

    private String linea;
    private String style;

    public TextosMensaje() {
    }

    @XmlElement(name = "linea")
    public String getLinea() {
        return linea;
    }

    public void setLinea(String linea) {
        this.linea = linea;
    }


    @XmlAttribute(name="style")
    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

}

这是我认为列表的java类。

@XmlRootElement(name = "aviso")
public class Aviso {

    private String id;

    private List<TextosMensaje> tituloList;
    private List<TextosMensaje> informacionList;
    private List<TextosMensaje> instruccionesList;

    public Aviso() {
    }

    @XmlAttribute(name = "id")
    public String getId() {
        return id;
    }

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

    @XmlElementWrapper(name = "titulo")
    @XmlElement(name = "linea")
    public List<TextosMensaje> getTituloList() {
        return tituloList;
    }

    public void setTituloList(List<TextosMensaje> tituloList) {
        this.tituloList = tituloList;
    }

    @XmlElementWrapper(name = "informacion")
    @XmlElement(name = "linea")
    public List<TextosMensaje> getInformacionList() {
        return informacionList;
    }

    public void setInformacionList(List<TextosMensaje> informacionList) {
        this.informacionList = informacionList;
    }

    @XmlElementWrapper(name = "instrucciones")
    @XmlElement(name = "linea")
    public List<TextosMensaje> getInstruccionesList() {
        return instruccionesList;
    }

    public void setInstruccionesList(List<TextosMensaje> instruccionesList) {
        this.instruccionesList = instruccionesList;
    }

}

谢谢。

1 个答案:

答案 0 :(得分:1)

在您的用例中,linea元素对应于具有简单内容的复杂类型。因此,您应该使用@XmlValue属性上的linea注释按如下方式对您的类进行注释。

public class TextosMensaje {

    private String linea;
    private String style;

    public TextosMensaje() {
    }

    @XmlValue
    public String getLinea() {
        return linea;
    }

    public void setLinea(String linea) {
        this.linea = linea;
    }


    @XmlAttribute
    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

}

了解更多信息

我在博客上写了更多关于此用例的内容: