rt,有如下的xml结构:
<class num="2">
<student>学生01</student>
<student>学生02</student>
<student>
<name>张三</name>
<age>12</age>
</student>
</class>
class节点下有student节点,但是对于student来说,既有可能是文本内容,也有可能有下层嵌套节点,按照标准,我先定义了一个bean:
@XStreamAlias("class")
@Data
public class Class implements Serializable {
private static final long serialVersionUID = 1L;
@XStreamImplicit(itemFieldName = "student")
private List<String> students;
}
这样能够处理“<student>学生01</student>”这样的情况,接着,为了处理嵌套,新定义了一个Student.class
@XStreamAlias("student")
@Data
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@XStreamAlias("name")
private String name;
@XStreamAlias("age")
private String age;
}
然后,将Class的bean修改为:
@XStreamAlias("class")
@Data
public class Class implements Serializable {
private static final long serialVersionUID = 1L;
@XStreamImplicit(itemFieldName = "student")
private List<Student> students;
}
结果如下:
(students=[Student(name=null, age=null), Student(name=null, age=null), Student(name=张三, age=12)])
可以读取嵌套结构了,但是“<student>学生01</student>”无法被识别。
搜了很多,大部分解决的都是“节点既有属性又有值”的情况,解法是实现个Converter,这个也要这样做吗?是参考ToAttributedValueConverter的实现逻辑吗?有没有更方便更官方的解决方式?