我正在使用 XMLMapper 反序列化 AIML 代码(大部分与 XML 相同),当我在同一个标签下混合文本和标签时遇到了这个问题。例子:
<set name="setVar">
<srai>FUNCTION1</srai>
<srai>FUNCTION2<star index="1"/></srai>
</set>
我的java类定义是:
@JacksonXmlRootElement(localName = "set")
public class Set {
@JacksonXmlProperty(isAttribute = true, localName = "name")
public String name;
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "srai")
public List<Srai> srais;
public Set() {
}
public Set(String name, List<Srai> srais) {
this.name = name;
this.srais = srais;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Srai> getSrais() {
return srais;
}
public void setSrais(List<Srai> srais) {
this.srais = srais;
}
}
@JacksonXmlRootElement(localName = "srai")
public class Srai {
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "star")
public List<Star> stars;
@JacksonXmlText
public String text;
public Srai() {}
public Srai(String text, List<Star> stars) {
this.text = text;
this.stars = stars;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public List<Star> getStars() {
return stars;
}
public void setStars(List<Star> stars) {
this.stars = stars;
}
}
@JacksonXmlRootElement(localName = "star")
public class Star {
@JacksonXmlProperty(isAttribute = true)
public int index;
public Star() {
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
如果我尝试反序列化其中只有文本或只有星星进入srai的代码,一切正常,当我混合文本和标签时会出现问题。