jakson实体类转成XML
@Data @JacksonXmlRootElement(localName = "service") public class XmlService { @JacksonXmlProperty(localName = "SYS_HEAD") private SysHeader sysHeader; @JacksonXmlProperty(localName = "LOCAL_HEAD") private LocalHeader localHeader; @JacksonXmlProperty(localName = "APP_HEAD") private AppHeader appHeader; @JacksonXmlProperty(localName = "BODY") private RequestBody requestBody; }
<?xml version='1.0' encoding='UTF-8'?>
<service> <SYS_HEAD> <TranTime>2023-06-07 14:53:35</TranTime> </SYS_HEAD> <LOCAL_HEAD/> <APP_HEAD/> <BODY> <BusStrip>04</BusStrip> </BODY> </service>
上面是实体类转换成XML,对应的关系
转换关键代码是:
//请求首字母大写
xmlMapper.setPropertyNamingStrategy(UPPER_CAMEL_CASE);
//请求头 <?xml version='1.0' encoding='UTF-8'?>
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true)
// 请求格式化输出 ,writerWithDefaultPrettyPrinter()
xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(test);
private static String printXml(XmlService test) { XmlMapper xmlMapper = new XmlMapper(); xmlMapper.setPropertyNamingStrategy(UPPER_CAMEL_CASE); xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); // 格式化输出 String xmlStr = null; try { xmlStr = xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(test); } catch (JsonProcessingException e) { e.printStackTrace(); } log.info("定制xml格式化输出:\n{}", xmlStr); return xmlStr; }
这个是解析XML获取里面对应的数据
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<service>\n" + "\t<SYS_HEAD>\n" + "\t\t<ServiceCode></ServiceCode>\n" + "\t\t<ServiceScene></ServiceScene>\n" + "\t\t<ConsumerId></ConsumerId>\n" + "\t\t<ConsumerSeqNo></ConsumerSeqNo>\n" + "\t\t<TranDate>20141029</TranDate>\n" + "\t\t<TranTime>143238</TranTime>\n" + "\t\t<ServSeqNo></ServSeqNo>\n" + "\t\t<ReturnStatus>F</ReturnStatus>\n" + "\t\t<array>\n" + "\t\t\t<Ret>\n" + "\t\t\t\t<ReturnCode>10242100008042</ReturnCode>\n" + "\t\t\t\t<ReturnMsg>协议读取数据失败</ReturnMsg>\n" + "\t\t\t</Ret>\n" + "\t\t</array>\n" + "\t</SYS_HEAD>\n" + "</service>\n"; parseReturnXml(xml); } private static void parseReturnXml(String input) throws JsonProcessingException { XmlMapper mapper = new XmlMapper(); JSONObject book = mapper.readValue(input, JSONObject.class); String ReturnCode = jsonLoop(book, "ReturnCode"); String ReturnMsg = jsonLoop(book, "ReturnMsg"); System.out.println(book); } public static String jsonLoop(JSONObject object, String code) { Set<String> strings = object.keySet(); for (String string : strings) { if (code.equals(string)) { return object.getString(code); } else { try { JSONObject o = object.getJSONObject(string); return jsonLoop((JSONObject) o, code); } catch (Exception e) { } } } return null; }
参考
https://blog.csdn.net/qq_33721382/article/details/108228928