Я пытаюсь разобрать данный XML-файл в общий класс с помощью JAXB. Но я не получаю ничего в классе - PullRequest
0 голосов
/ 02 мая 2019

Ниже приведен пример XML-файла. Я хочу вытащить всю информацию в XML в объект Java, используя JAXB. Обратите внимание, что тег повторяется.

<ICExt>
  <AA>
    <PA1>20067</PA1>   
    <PA2>
    <FFGAG>
     <KICUC>
      <R_CAT_NAME>testing1234</R_CAT_NAME>
      <params>
     <req_id>7746318</req_id>
         <FNAME>Testing line</FNAME>
         <ldata_group_id/>
         <edate>2010-01-01</edate>
         <sdate/>
         <rep_cat_id>265131</rep_cat_id>
         <ac_param_group_id/>
      </params>

      <Employees>
       <empl_rec>
          <emp_id>1000</emp_id>
          <Salary>20000</Salary>
       </empl_rec>
      </Employees>
      <Employees>
       <empl_rec>
          <emp_id>5600</emp_id>
          <Salary>34000</Salary>
       </empl_rec>
      </Employees>

    </KICUC>
  </FFGAG>
</PA2>   
</AA>
  </ICExt>

Есть идеи?

1 Ответ

0 голосов
/ 03 мая 2019

Мне удалось проанализировать XML в объект Java с помощью JAXB.

ICExt - это распространенный класс.ICExtUnmarshaler - это синтаксический анализатор

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

@XmlRootElement(name = "ICExt")
@XmlAccessorType(XmlAccessType.FIELD)
@EqualsAndHashCode
@Setter
@Getter
@ToString
public class ICExt {
    @XmlElement(name = "AA")
    private AA aa;

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class AA {
        @XmlElement(name = "PA1")
        private String pa1;
        @XmlElement(name = "PA2")
        private PA2 pa2;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class PA2 {
        @XmlElement(name = "FFGAG")
        private FFGAG ffgag;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class FFGAG {
        @XmlElement(name = "KICUC")
        private KICUC kicuc;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class KICUC {
        @XmlElement(name = "R_CAT_NAME")
        private String rCatName;

        @XmlElement(name = "Employees")
        private List<Employee> employees = new LinkedList<>();

        @XmlElement(name = "params")
        private Params params;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class Params {
        @XmlElement(name = "req_id")
        private String reqId;

        @XmlElement(name = "sdate")
        private Date startDate;

        @XmlElement(name = "rep_cat_id")
        private String repCatId;

        @XmlElement(name = "ldata_group_id")
        private String lDataGroupId;

        @XmlElement(name = "ac_param_group_id")
        private String acParamGroupId;

        @XmlElement(name = "edate")
        private Date endDate;

        @XmlElement(name = "FNAME")
        private String fName;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class Employee {
        @XmlElement(name = "empl_rec")
        private EmplRec emplRec;
    }

    @Setter
    @Getter
    @XmlAccessorType(XmlAccessType.FIELD)
    @EqualsAndHashCode
    public static class EmplRec {
        @XmlElement(name = "Salary")
        private String salary;

        @XmlElement(name = "emp_id")
        private String empId;
    }
}


import javax.xml.bind.JAXBContext;
import java.io.StringReader;

public class ICExtUnmarshaler {

    public ICExt unmarshal(String xmlContent) throws Exception {
        JAXBContext context = JAXBContext.newInstance(ICExt.class);
        return (ICExt) context.createUnmarshaller().unmarshal((new StringReader(xmlContent)));
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...