<?xml version="1.0" encoding="utf-8" ?>
<yesone>
<doc>
<doc_type>B</doc_type>
<seq>2015121100007453</seq>
<att_year>2015</att_year>
<att_FrmMm>0</att_FrmMm>
<att_ToMm>0</att_ToMm>
<att_inqrMm>01,02,03,04,05,06,07,08,09,10,11,12</att_inqrMm>
</doc>
<form form_cd="D101Y">
<man resid="6611201653606" name="dolch">
<data dat_cd="D01" busnid="1168140432" trade_nm="gagag(sa)" acc_no="00001532">
<start_dt>19940708</start_dt>
<end_dt>99991231</end_dt>
<com_cd>434</com_cd>
<sum>1041000</sum>
</data>
</man>
</form>
<form form_cd="E102Y">
<man resid="6611201653606" name="dolch">
<data dat_cd="E01" busnid="1244661351" trade_nm="gwerqreqxd" acc_no="9601687930560">
<com_cd>110</com_cd>
<ann_tot_amt>1200000</ann_tot_amt>
<tax_year_amt>0</tax_year_amt>
<ddct_bs_ass_amt>1200000</ddct_bs_ass_amt>
</data>
</man>
</form>
<form form_cd="F102Y">
<man resid="6611201653606" name="dolch">
<data dat_cd="F01" busnid="6108155691" trade_nm="(asd)gagsgs" acc_no="21010625891874">
<com_cd>150</com_cd>
<pension_cd>12</pension_cd>
<ann_tot_amt>8519160</ann_tot_amt>
<tax_year_amt>0</tax_year_amt>
<ddct_bs_ass_amt>8519160</ddct_bs_ass_amt>
</data>
</man>
</form>
</yesone>
如何将此XML转换为Java Map?
另外,请给我一个关于图书馆的建议,我需要这样做。
我想要的是什么,如下所示
DOC_TYPE = B,SEQ = 2015121100007453,att_year = 2015,att_FrmMm = 0,att_ToMm = 0,att_inqrMm = 01,02,03,04,05,06,07,08,09,10,11,12 .......................〜
答案 0 :(得分:0)
杰克逊是一个很棒的图书馆。研究一些关于如何阅读XML的例子。
在objectmapper的readValue()方法中,只需指定Map.class作为结果类型,就应该支持它。
答案 1 :(得分:0)
使用Xstream,您可以在此处详细了解:http://x-stream.github.io/
答案 2 :(得分:0)
Underscore-java库可以将xml转换为Map。我是该项目的维护者。 Live example.
import com.github.underscore.lodash.U;
import java.util.*;
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Map<String, Object> map = (Map<String, Object>) U.fromXml(
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n" +
"<yesone>\r\n" +
"<doc>\r\n" +
" <doc_type>B</doc_type>\r\n" +
" <seq>2015121100007453</seq>\r\n" +
" <att_year>2015</att_year>\r\n" +
" <att_FrmMm>0</att_FrmMm>\r\n" +
" <att_ToMm>0</att_ToMm>\r\n" +
" <att_inqrMm>01,02,03,04,05,06,07,08,09,10,11,12</att_inqrMm>\r\n" +
"</doc>\r\n" +
"<form form_cd=\"D101Y\">\r\n" +
" <man resid=\"6611201653606\" name=\"dolch\">\r\n" +
" <data dat_cd=\"D01\" busnid=\"1168140432\" trade_nm=\"gagag(sa)\" acc_no=\"00001532\">\r\n" +
" <start_dt>19940708</start_dt>\r\n" +
" <end_dt>99991231</end_dt>\r\n" +
" <com_cd>434</com_cd>\r\n" +
" <sum>1041000</sum>\r\n" +
" </data>\r\n" +
" </man>\r\n" +
"</form>\r\n" +
"\r\n" +
"<form form_cd=\"E102Y\">\r\n" +
" <man resid=\"6611201653606\" name=\"dolch\">\r\n" +
" <data dat_cd=\"E01\" busnid=\"1244661351\" trade_nm=\"gwerqreqxd\" acc_no=\"9601687930560\">\r\n" +
" <com_cd>110</com_cd>\r\n" +
" <ann_tot_amt>1200000</ann_tot_amt>\r\n" +
" <tax_year_amt>0</tax_year_amt>\r\n" +
" <ddct_bs_ass_amt>1200000</ddct_bs_ass_amt>\r\n" +
" </data>\r\n" +
" </man>\r\n" +
"</form>\r\n" +
"\r\n" +
"<form form_cd=\"F102Y\">\r\n" +
" <man resid=\"6611201653606\" name=\"dolch\">\r\n" +
" <data dat_cd=\"F01\" busnid=\"6108155691\" trade_nm=\"(asd)gagsgs\" acc_no=\"21010625891874\">\r\n" +
" <com_cd>150</com_cd>\r\n" +
" <pension_cd>12</pension_cd>\r\n" +
" <ann_tot_amt>8519160</ann_tot_amt>\r\n" +
" <tax_year_amt>0</tax_year_amt>\r\n" +
" <ddct_bs_ass_amt>8519160</ddct_bs_ass_amt>\r\n" +
" </data>\r\n" +
" </man>\r\n" +
"</form>\r\n" +
"\r\n" +
"</yesone>");
System.out.println(map);
// {yesone={doc={doc_type=B, seq=2015121100007453, att_year=2015, att_FrmMm=0, att_ToMm=0, ...
}
}