原文地址
前言
这里我们以弹幕的xml
文件为例
<i>
<chatserver/>
<chatid>67173454</chatid>
<mission/>
<maxlimit/>
<state/>
<real_name/>
<source/>
<d p="0,1,25,16777215,1544891416,1,f6063692,9305714206965760">DIY</d>
<d p="0,1,25,16777215,1544891446,1,fb287ca7,9305730067726336">占楼</d>
<d p="0.698,5,25,15138834,1544891472,1,25e650c7,9305743667757056">大家早啊</d>
<d p="0.887,1,25,16777215,1544891485,1,efe26648,9305750776053760">爱丽丝</d>
<d p="0.957,1,25,16777215,1544891676,1,750501a,9305850754105344">真好</d>
<d p="0.198,5,25,15138834,1544892099,1,64f18b27,9306072548376576">沙发</d>
<d p="0.241,5,25,41194,1544892435,1,9fefa12,9306248345288704">借号的微笑B</d>
<d p="0.404,1,25,16777215,1544893076,1,36ff170a,9306584581668864">早早早</d>
<d p="0.641,1,25,16777215,1544894814,1,30b17e21,9307495857651712">我永远爱茅野爱衣!!!</d>
<d p="0,1,25,16777215,1544920619,1,2812eddc,9321025143046144">等了好久了</d>
<d p="0.4,5,25,16777215,1544933502,1,b47d291c,9327779633954816">我好兴奋啊</d>
<d p="0.499,5,25,16711680,1544935021,1,928b338d,9328575906316288">提前涂油</d>
</i>
实现
直接上代码吧,没啥好说的,坑都踩完了
引包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.13.3</version>
</dependency>
对象类
@Data
@JacksonXmlRootElement
@NoArgsConstructor
@AllArgsConstructor
public class BarrageCollection {
@JacksonXmlProperty(localName = "chatserver", isAttribute = true)
private String chatServer;
@JacksonXmlProperty(localName = "chatid", isAttribute = true)
private String chatId;
@JacksonXmlProperty(localName = "mission", isAttribute = true)
private String mission;
@JacksonXmlProperty(localName = "maxlimit", isAttribute = true)
private String maxLimit;
@JacksonXmlProperty(localName = "state", isAttribute = true)
private String state;
@JacksonXmlProperty(localName = "real_name", isAttribute = true)
private String realName;
@JacksonXmlProperty(localName = "source", isAttribute = true)
private String source;
@JacksonXmlElementWrapper(localName = "i", useWrapping = false)
@JacksonXmlProperty(localName = "d")
private List<Barrage> barrageList;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Barrage {
@JacksonXmlProperty(localName = "p", isAttribute = true)
private String property;
@JacksonXmlText
private String content;
}
解析
File file = new File("Z:\\download\\chrome\\test.xml");
XmlMapper xmlMapper = new XmlMapper();
BarrageCollection poppy = xmlMapper.readValue(file, BarrageCollection.class);