xml如何在java SimpleXML中反序列化嵌套对象
我有下面的xml,我想用simpleXML解析它
<programme start="20161107190000 GMT+04:00" stop="20161107200000 GMT+04:00" channel="001">
<title lang="en_GB">Foo</title>
<desc lang="en_GB">Foobarbaz</desc>
</programme>
<programme start="20161107200000 GMT+04:00" stop="20161107203000 GMT+04:00" channel="001">
<title lang="en_GB">JLS</title>
<desc lang="en_GB">The Java Language Specification</desc>
</programme>
有以下几点
@Root
public class Programme {
@Attribute(name = "channel", required = false)
private String channel;
@Attribute(name = "start", required = false)
private String start;
@Attribute(name = "stop", required = false)
private String stop;
@Element(name = "title", required = false)
private Title title;
@Element(name = "desc", required = false)
private String desc;
public Programme(String channel, String start, String stop, String title, String desc) {
this.channel = channel;
this.start = start;
this.stop = stop;
this.title = title;
this.desc = desc;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getStop() {
return stop;
}
public void setStop(String stop) {
this.stop = stop;
}
public Title getTitle() {
return title;
}
public void setTitle(Title title) {
this.title = title;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Root(name = "title")
public class Title {
@Attribute
private String lang;
private String text;
public Title(String lang, String text) {
this.lang = lang;
this.text = text;
}
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
@Text
public String getText() {
return text;
}
@Text
public void setText(String text) {
this.text = text;
}
}
}
给我错误org.simpleframework.xml.core.ConstructorException: Can not construct inner class
# 1 楼答案
有几件事需要注意
1)如果内部元素中的属性有嵌套类,则嵌套类必须是
static
2)为内部类定义变量时必须注释如下
3)在构造函数中,他们应该实例化一个空类
这是一个完整的工作版本: