对xml文件的操作也可以借助hutool
的XmlUtil
.
1. xml格式
<root><deviceStatInfo onlineCount="64" offlineCount="2" errorCount="0"/><data><record id="0" name="5号楼10层流量计" status="预警2/正常1/异常3" time="2024-04-10 12:30"/><record id="1" name="5号楼13层流量计" status="预警2/正常1/异常3" time="2024-04-10 12:30"/><record id="2" name="5号楼16层流量计" status="预警2/正常1/异常3" time="2024-04-10 12:30"/><record id="3" name="5号楼19层流量计" status="预警2/正常1/异常3" time="2024-04-10 12:30"/></data>
</root>
2. 实体类
注意其中XmlElementWrapper
和XmlElement
的位置
点击查看实体类
package com.tky.digital.twin.api.dto;import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.List;/*** @author codor* @date 2024/04/19 15:31*/
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "root")
public class EquipmentWaterPipeStatusMessage implements Serializable {private static final long serialVersionUID = 1L;// @XmlAttributeprivate DeviceStatInfoDto deviceStatInfo;// @XmlAttributeprivate List<Record> data;@NoArgsConstructor@AllArgsConstructorpublic static class DeviceStatInfoDto implements Serializable {private int onlineCount;private int offlineCount;private int errorCount;@XmlAttributepublic int getOnlineCount() {return onlineCount;}public void setOnlineCount(int onlineCount) {this.onlineCount = onlineCount;}@XmlAttributepublic int getOfflineCount() {return offlineCount;}public void setOfflineCount(int offlineCount) {this.offlineCount = offlineCount;}@XmlAttributepublic int getErrorCount() {return errorCount;}public void setErrorCount(int errorCount) {this.errorCount = errorCount;}}@NoArgsConstructor@AllArgsConstructorpublic static class Record implements Serializable {private String id;private String name;private String status;private String time;@XmlAttributepublic String getId() {return id;}public void setId(String id) {this.id = id;}@XmlAttributepublic String getName() {return name;}public void setName(String name) {this.name = name;}@XmlAttributepublic String getStatus() {return status;}public void setStatus(String status) {this.status = status;}@XmlAttributepublic String getTime() {return time;}public void setTime(String time) {this.time = time;}}@XmlElement(name = "deviceStatInfo")public DeviceStatInfoDto getDeviceStatInfo() {return deviceStatInfo;}public void setDeviceStatInfo(DeviceStatInfoDto deviceStatInfo) {this.deviceStatInfo = deviceStatInfo;}@XmlElementWrapper(name = "data")@XmlElement(name = "record")public List<Record> getData() {return data;}public void setData(List<Record> data) {this.data = data;}
}
3. 接口接收
@PostMapping(value = "/waterpipe", produces = {MediaType.APPLICATION_XML_VALUE})
public void waterpipe(@RequestBody EquipmentWaterPipeStatusMessage message) {System.out.println("JSONUtil.toJsonStr(message) = " + JSONUtil.toJsonStr(message));
}