2
デシリアライズ時にJacksonのXMLMapperにルートxml要素の名前を読み取らせるにはどうすればよいですか?Jackson XMLMapperにルート要素名を読み取らせます
入力XMLを汎用JavaクラスのLinkedHashMapに、次にJSONに逆シリアル化しています。デシリアライズ時に入力XMLのルート要素をLinkedHashMapに動的に読み込みたい
コード
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
<?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>
実際の出力
{"NumLeases":"1","NEDOCO":"18738","NWUNIT":"0004","FLAG":"SUCCESS","MESSAGE":"Test Upload","Lease":{"LeaseVersion":"1","F1501B":{"NEDOCO":"18738","NWUNIT":"0004","NTRUSTRECORDKEY":"12"}}}
予想される出力(注意:JSONに存在する「ファイル」という名前のルート要素があります)
{"File":{"NumLeases":"1","NEDOCO":"18738","NWUNIT":"0004","FLAG":"SUCCESS","MESSAGE":"Test Upload","Lease":{"LeaseVersion":"1","F1501B":{"NEDOCO":"18738","NWUNIT":"0004","NTRUSTRECORDKEY":"12"}}}}
いくつかのスイッチがそれを設定するためにどこかにおそらくあります。いかなる援助も感謝しなければならない。
私の元の質問マップにXMLを変換することでしたが、あなたの答えは私が必要なものに洞察力を提供するのに役立つでしたが。このコードは、XMLからJSONへの変換に完全に対応しています。 – Aman
あなたが望むなら、あなたの質問をよりよく反映するように私の答えを編集することができます... –
私はJSONに私のXMLを変換してしまったので、私はそれに応じて私の質問を編集しました。ありがとう! – Aman