Wie bekomme ich Jacksons XMLMapper, um den Namen des Root-XML-Elements beim Deserialisieren zu lesen?Erhalte Jackson XMLMapper, um den Namen des Root-Elements zu lesen
Ich Deserialisierung Eingabe-XML zu generischer Java-Klasse, LinkedHashMap und dann zu JSON. Ich möchte das Stammelement von XML-Eingabe bei der Deserialisierung in LinkedHashMap dynamisch lesen.
-Code
XmlMapper xmlMapper = new XmlMapper();
Map entries = xmlMapper.readValue(new File("source.xml"), LinkedHashMap.class);
ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writer().writeValueAsString(entries);
System.out.println(json);
XML-Input-
<?xml version="1.0" encoding="ISO-8859-1"?>
<File>
<NumLeases>1</NumLeases>
<NEDOCO>18738</NEDOCO>
<NWUNIT>0004</NWUNIT>
<FLAG>SUCCESS</FLAG>
<MESSAGE>Test Upload</MESSAGE>
<Lease>
<LeaseVersion>1</LeaseVersion>
<F1501B>
<NEDOCO>18738</NEDOCO>
<NWUNIT>0004</NWUNIT>
<NTRUSTRECORDKEY>12</NTRUSTRECORDKEY>
</F1501B>
</Lease>
</File>
Tatsächliche Ausgabe
{"NumLeases":"1","NEDOCO":"18738","NWUNIT":"0004","FLAG":"SUCCESS","MESSAGE":"Test Upload","Lease":{"LeaseVersion":"1","F1501B":{"NEDOCO":"18738","NWUNIT":"0004","NTRUSTRECORDKEY":"12"}}}
Erwartete Ausgabe (Hinweis: Es ist ein Wurzelelement „Datei“ in JSON genannt)
{"File":{"NumLeases":"1","NEDOCO":"18738","NWUNIT":"0004","FLAG":"SUCCESS","MESSAGE":"Test Upload","Lease":{"LeaseVersion":"1","F1501B":{"NEDOCO":"18738","NWUNIT":"0004","NTRUSTRECORDKEY":"12"}}}}
gibt es wahrscheinlich einige Schalter irgendwo zu setzen. Jede Hilfe soll geschätzt werden.
Obwohl meine ursprüngliche Frage war, XML in Map zu konvertieren, aber Ihre Antwort war hilfreich, um Einblick zu geben, was ich brauche. Der Code funktioniert perfekt für XML zu JSON Konverter. – Aman
Wenn Sie möchten, können Sie meine Antwort bearbeiten, um Ihre Frage besser widerzuspiegeln ... –
Ich habe meine XML in JSON konvertiert, also habe ich meine Frage entsprechend bearbeitet. Vielen Dank! – Aman