weixin_46658126 2021-05-15 11:33 采纳率: 50%
浏览 48
已采纳

XStream节点下既有子节点又有值

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的实现逻辑吗?有没有更方便更官方的解决方式?

  • 写回答

3条回答 默认 最新

  • 关注

    这种情况很多呀,比如数据结构的树,二叉树这里的结构,都是类里面包含自己的。用domj实现吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换