XStream如何处理内容和子标签混排?

大佬好,关于XStream使用有点问题

如下是我的xml内容:

<p>哈哈<sub>123</sub>嘿嘿</p>

下面是读取并转换的方式

public static void main(String[] args) {
	String xmlText = "<p>哈哈<sub>123</sub>嘿嘿</p>";
	XStream xStream = new XStream();
	XStream.setupDefaultSecurity(xStream);
	xStream.autodetectAnnotations(Boolean.TRUE);
	xStream.allowTypes(new Class[]{P.class, Sub.class});
	xStream.processAnnotations(P.class);
	xStream.processAnnotations(Sub.class);
	System.out.println(xStream.fromXML(xmlText));
}

其中,在P.java中我是这么定义的:

@XStreamAlias("p")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = {"text"})
@Data
public class P implements Serializable {

	private static final long serialVersionUID = 1L;

	private String text;

	@XStreamAlias(value = "sub")
	private Sub sub;
}

最后的结果如下:

P(text=哈哈, sub=null)

并没有按照我的预期生成:

P(text=哈哈嘿嘿, sub=123)

请问是我哪里配置的不对吗?谢谢

你解析的xml  两个标签不是并列的,不是兄弟关系,而是父子关系(嵌套关系),所以你可以尝试一下分别定义两个Java bean类,然后使用XStream逐级解析数据。

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~