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

浙公网安备 33010602011771号