我正在尝试创建一个可以同时包含元素和值的java / jaxb类 .
我想在类A的列表中读取类的属性,并输出为类A本身的值 .
这是XML:
我必须阅读:
<data>
<device id=”DEV123”>
<error id=”ERR1”/>
</device>
</data>
并 生产环境 :
<data>
<device id="DEV123">ERR1</device>
</data>
这是我的错误类 - 工作正常:
@XmlRootElement(name = "error")
public class Error implements Serializable {
private String id;
@XmlAttribute(name ="id")
public String getId() {
return id;
}
public void setId(String id ){
this.id = id;
}
}
我的设备类:
@XmlRootElement(name = "device")
public class Device implements Serializable {
private String id;
private String device;
private ArrayList<Error> errorList;
@XmlElement
public ArrayList<Error> getErrorList() {
return errorList;
}
@XmlAttribute(name = "id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlValue
public String getDevice(){
return this.device;
}
}
Jaxb抱怨我不能在同一个类中同时拥有xmlelement(Error)和xmlvalue
"If a class has @XmlElement property, it cannot have @XmlValue property."
我如何正确建模/注释这个以允许我读取错误xml标记的属性并将其生成为设备标记的值?
1 回答
您可以执行以下操作:
使用@XmlMixed而不是@XmlValue
使用StreamFilter删除空格
使用
@XmlMixed
注释的属性将拾取任何文本字符,无论它是否为空格 . 如果该属性是一个集合,如果它不是遇到的每一段文本将消灭最后一个,它将获取everthing . 因此,您需要在解析时消除空白 .Related Example