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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?