繁体   English   中英

将XML转换为Java中的Map

[英]Convert XML to Map in java

<?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 ..... .........〜

杰克逊是一个很棒的图书馆。 研究有关如何读取XML的一些示例。

在objectmapper的readValue()方法中,只需将Map.class指定为结果类型,就应该支持它。

从这里开始https://fasterxml.github.io/jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind/ObjectMapper.html

使用Xstream,您可以在此处了解更多信息: http : //x-stream.github.io/

请参见如何将XML转换为java.util.Map,反之亦然

Underscore-java库可以将xml转换为Map。 我是该项目的维护者。 现场示例。

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, ...
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM