工具类
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
/**
* @author 花鼠大师
* @description: TODO
* @date 2023/2/22 16:29
*/
public class XmlToObjectUtil {
/**
* 将String类型的xml转换成对象
*/
public static <T> T convertXmlStrToObject(String xmlStr, Class<T> clazz) {
T message = null;
try {
JAXBContext jaxbContext = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xmlStr);
message = (T) unmarshaller.unmarshal(reader);
} catch (JAXBException e) {
e.printStackTrace();
}
return message;
}
}
测试实体类
package com.ruoyi.school.hikAlarm.dto;
import lombok.Data;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @author 花鼠大师
* @description:
* @date 2023/2/22 16:31
*/
@XmlRootElement(name="FDDescription")
@Data
public class FDDescription {
private String name;
private String prompt;
private String provinceName;
private String cityName;
}
注意:实体类要加上@XmlRootElement(name=“”)注解,其中name=“”的值为xml标签的根标签名
测试类
@Test
public void alarmDataHandle() {
String testStr = "<FDDescription>\n" +
"<name>对比</name>\n" +
"<prompt>谢谢</prompt>\n" +
"<provinceName>河北</provinceName>\n" +
"<cityName>石家庄</cityName>\n" +
"</FDDescription>\n";
FDDescription fdDescription = XmlToObjectUtil.convertXmlStrToObject(testStr, FDDescription.class);
System.out.println(fdDescription.toString());
}
结果
测试数据
<FDDescription>
<name>对比</name>
<prompt>谢谢</prompt>
<provinceName>河北</provinceName>
<cityName>石家庄</cityName>
</FDDescription>