@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>
Lo anterior es la clase de entidad convertida en XML, la relación correspondiente
El código de la clave de conversión es:
// Solicitar mayúsculas de la primera letra
xmlMapper.setPropertyNamingStrategy(UPPER_CAMEL_CASE);
//Encabezado de solicitud <?xml version='1.0' encoding='UTF-8'?>
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, verdadero)
// solicitud de salida formateada, escritorConDefaultPrettyPrinter()
xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(prueba);
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;
}
Esto es para analizar el XML para obtener los datos correspondientes dentro
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;
}
referencia
https://blog.csdn.net/qq_33721382/article/details/108228928