工具類
/**
* 將XML轉為指定的POJO
* @param clazz
* @param xmlStr
* @return
* @throws Exception
*/
public static Object xmlStrToOject(Class<?> clazz, String xmlStr) throws Exception {
Object xmlObject = null;
Reader reader = null;
try{
JAXBContext context = JAXBContext.newInstance(clazz);
// XML 轉為對象的接口
Unmarshaller unmarshaller = context.createUnmarshaller();
reader = new StringReader(xmlStr);
xmlObject = unmarshaller.unmarshal(reader);
if (null != reader) {
reader.close();
}
}catch (Exception e){e.printStackTrace();}
return xmlObject;
}
使用工具類
Vehicle vehicle = (Vehicle)XmlUtil.xmlStrToOject(Vehicle.class,xmlStr);
String str = vehicle.getCamID().get(0);
測試
public static void main(String[] args) {
String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"\n" +
"<Vehicle> \n" +
" <CamID>43030412341319100034</CamID> \n" +
" <CarPlate>湘X538D警</CarPlate> \n" +
" <PlateColor>0</PlateColor> \n" +
" <VehicleSpeed>1</VehicleSpeed> \n" +
" <PlateType>23</PlateType> \n" +
" <IdentifyStatus>0</IdentifyStatus> \n" +
" <VehicleColor>Z</VehicleColor> \n" +
" <VehicleType>1</VehicleType> \n" +
" <DriveStatus>12080</DriveStatus> \n" +
" <TollgateID>KKBM43030412341319100034</TollgateID> \n" +
" <PassTime>20190926172608099</PassTime> \n" +
" <RecordID>979799083</RecordID> \n" +
" <DBRecordID>0</DBRecordID> \n" +
" <Image> \n" +
" <ImageIndex>1</ImageIndex> \n" +
" <ImageURL>http://43.27.0.85:8086/43.27.0.91:7549/alarm$762143830_91532/2019/09/26/17/KKBM43030412341319100034/260891900.jpg?dev=XT8Q-CDS-1&fid=117508-29-13D2E8002D-155A0BA-63B56</ImageURL> \n" +
" <PassTime>20190926172601791</PassTime> \n" +
" <ImageType>1</ImageType> \n" +
" <ImageData/> \n" +
" </Image> \n" +
" <Image> \n" +
" <ImageIndex>2</ImageIndex> \n" +
" <ImageURL>http://43.27.0.85:8086/43.27.0.91:7549/alarm$762143830_91532/2019/09/26/17/KKBM43030412341319100034/260891901.jpg?dev=XT8Q-CDS-1&fid=117508-29-13D2E8002D-15BDCD8-5ECB4</ImageURL> \n" +
" <PassTime>20190926172603929</PassTime> \n" +
" <ImageType>1</ImageType> \n" +
" <ImageData/> \n" +
" </Image> \n" +
" <Image> \n" +
" <ImageIndex>3</ImageIndex> \n" +
" <ImageURL>http://43.27.0.85:8086/43.27.0.91:7549/alarm$762143830_91532/2019/09/26/17/KKBM43030412341319100034/260891902.jpg?dev=XT8Q-CDS-1&fid=117508-29-13D2E8002D-161CA54-4FF99</ImageURL> \n" +
" <PassTime>20190926172608099</PassTime> \n" +
" <ImageType>1</ImageType> \n" +
" <ImageData/> \n" +
" </Image> \n" +
" <Image> \n" +
" <ImageIndex>4</ImageIndex> \n" +
" <ImageURL>http://43.27.0.85:8086/43.27.0.91:7549/alarm$762143830_91532/2019/09/26/17/KKBM43030412341319100034/Character260891903.jpg?dev=XT8Q-CDS-1&fid=117508-29-13D2E8002D-166CAB5-78E</ImageURL> \n" +
" <ImageType>2</ImageType> \n" +
" <ImageData/> \n" +
" </Image> \n" +
" <PicNumber>4</PicNumber> \n" +
" <LaneID>1</LaneID> \n" +
" <LaneType>1</LaneType> \n" +
" <Direction>1</Direction> \n" +
" <VehicleBrand>98</VehicleBrand> \n" +
" <PlateNumber>1</PlateNumber> \n" +
" <VehicleBody/> \n" +
" <VehicleLength>0</VehicleLength> \n" +
" <DealTag/> \n" +
" <PlaceCode>GXCY</PlaceCode> \n" +
" <EquipmentType>1</EquipmentType> \n" +
" <PlateConfidence>78</PlateConfidence> \n" +
" <RearPlateConfidence>0</RearPlateConfidence> \n" +
" <GlobalComposeFlag>3</GlobalComposeFlag> \n" +
" <RedLightStartTime/> \n" +
" <RedLightEndTime/> \n" +
" <RedLightTime>0</RedLightTime> \n" +
" <LimitedSpeed>70</LimitedSpeed> \n" +
" <MarkedSpeed>70</MarkedSpeed> \n" +
" <VideoURL/> \n" +
" <VideoURL2/> \n" +
" <VehicleTopX>0000</VehicleTopX>\n" +
" <VehicleTopY>0800</VehicleTopY>\n" +
" <VehicleBotX>0568</VehicleBotX>\n" +
" <VehicleBotY>1558</VehicleBotY>\n" +
" <LPRRectTopX>0166</LPRRectTopX>\n" +
" <LPRRectTopY>1298</LPRRectTopY>\n" +
" <LPRRectBotX>0244</LPRRectBotX>\n" +
" <LPRRectBotY>1318</LPRRectBotY>\n" +
" <VehicleFace> \n" +
" <VehicleBrand/> \n" +
" <VehicleBrandType/> \n" +
" <VehicleBrandYear/> \n" +
" <VehicleBrandModel/> \n" +
" <IsVehicleHead/> \n" +
" </VehicleFace> \n" +
" <PlaceName>road</PlaceName> \n" +
" <PoliceCode/> \n" +
" <ReservedField1/> \n" +
" <ReservedField2/> \n" +
" <VehicleColorDept>0</VehicleColorDept> \n" +
" <TollgateName>高新路創業路-東向西-電警</TollgateName> \n" +
" <DressColor/> \n" +
" <ApplicationType/> \n" +
" <RearPlateColor/> \n" +
" <RearPlateType/> \n" +
" <RearVehiclePlateID/> \n" +
" <PlateCoincide/> \n" +
" <DirectionName/> \n" +
" <CamID/> \n" +
" <ImageURL2/> \n" +
" <ImageURL3/> \n" +
" <ImageURL4/> \n" +
" <TollgateName/> \n" +
"</Vehicle>";
System.out.println("xml數據="+xmlStr);
//轉換xml
Vehicle vehicle = null;
try {
//vehicle = changXmlOfPassCar(xmlStr);
vehicle = (Vehicle)XmlUtil.xmlStrToOject(Vehicle.class,xmlStr);
log.info("號牌種類為:{},車輛類型為:{}", vehicle.getPlateType(), vehicle.getVehicleType());
} catch (Exception e) {
e.printStackTrace();
}
}
/**過車bean
* Created by mW6408 on 2019/4/10.
*/
@Data
@XmlAccessorType(value= XmlAccessType.FIELD)
@XmlRootElement(name="Vehicle")
public class Vehicle {
private List<String> CamID; //卡口相機號
private String CarPlate;//號牌號碼
private String PlateColor;//號牌顏色
private String VehicleSpeed;//車輛速度
private String PlateType;//號牌種類
private String IdentifyStatus;
private String VehicleColor;//車身顏色
private String VehicleType;//車輛類型
private String DriveStatus;//違法行為
private String TollgateID;//卡口編號
private String PassTime;//違法時間
private String RecordID;
private String DBRecordID;
private List<Image> Image;
private String PicNumber;//照片數量
private String LaneID;//車道編號
private String LaneType;
private String Direction;//方向編碼
private String VehicleBrand;//車輛分類
private String PlateNumber;
private String VehicleBody;
private String VehicleLength;
private String DealTag;
private String PlaceCode;//違法地點
private String EquipmentType;
private String PlateConfidence;
private String RearPlateConfidence;
private String GlobalComposeFlag;
private String RedLightStartTime;
private String RedLightEndTime;
private String RedLightTime;
private String LimitedSpeed;
private String MarkedSpeed;
private String VideoURL;
private String VideoURL2;
private String VehicleTopX;
private String VehicleTopY;
private String VehicleBotX;
private String VehicleBotY;
private String LPRRectTopX;
private String LPRRectTopY;
private String LPRRectBotX;
private String LPRRectBotY;
private VehicleFace VehicleFace;
private String PlaceName;//違法地址
private String PoliceCode;
private String ReservedField1;
private String ReservedField2;
private String VehicleColorDept;
private String DressColor;
private String ApplicationType;
private String RearPlateColor;
private String RearPlateType;
private String RearVehiclePlateID;
private String PlateCoincide;
private String DirectionName;
private String ImageURL2;
private String ImageURL3;
private String ImageURL4;
private String TollgateName;
}
/**
* Created by liuzhou on 2019/9/29.
*/
@Data
@XmlAccessorType(value= XmlAccessType.FIELD)
@XmlRootElement(name = "Image")
public class Image {
private String ImageIndex;
private String ImageURL;
private String PassTime;
private String ImageType;
private String ImageData;
}
/**
* Created by liuzhou on 2019/9/29.
*/
@Data
@XmlAccessorType(value= XmlAccessType.FIELD)
public class VehicleFace {
private String VehicleBrand;
private String VehicleBrandType;
private String VehicleBrandYear;
private String VehicleBrandModel;
private String IsVehicleHead;
}
參考:
https://blog.csdn.net/LookForDream_/article/details/88884316