Немрашенный вложенный элемент с JAXB - PullRequest
0 голосов
/ 09 марта 2019

Как извлечь данные во вложенные элементы элемента mentalHealthDays?

Вот мой XML:

Вот мой код:


    @SpringBootApplication

    public class DemoApplication {

        public static void main(String[] args) {

         try {

                File file = new File("C:\\Users\\JFarmer\\Projects\\demo\\xml_wife.xml");
                JAXBContext jaxbContext = JAXBContext.newInstance(Response.class);

                Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
                Response customer = (Response) jaxbUnmarshaller.unmarshal(file);
                System.out.println(customer);

              } catch (JAXBException e) {
                e.printStackTrace();
              }


    }
    }
    @XmlRootElement(name="response")
    public class Response {

    String code;
    int fiscalYear;
    MentalHealthDays type;



    @Override
    public String toString() {
        return "Code=" + code + " , Fiscal Year=" + fiscalYear  + " ,test=" + type + "]";
    }

    @XmlElement
    public String getCode() {
        return code;
    }


    public void setCode(String code) {
        this.code = code;
    }

    @XmlElement
    public int getFiscalYear() {
        return fiscalYear;
    }


    public void setFiscalYear(int fiscalYear) {
        this.fiscalYear = fiscalYear;
    }

    @XmlElement
    public MentalHealthDays getType() {
        return type;
    }

    public void setType(MentalHealthDays type) {
        this.type = type;
    }

}

Также, если вы можете предоставить какие-либо ресурсы для лучшего понимания, это будет высоко ценится.

Я могу превратить первую пару элементов в переменные в своем классе, однако не могу понять, как извлечь данные из вложенных элементов в переменные. У меня также есть несколько вложенных элементов с одинаковым именем.

1 Ответ

1 голос
/ 09 марта 2019

Вы можете создать переменную List, содержащую объект MentalHealthDays, просто убедитесь, что вы называете атрибут с тем же именем, что и XMLElements, который вы хотите отменить:

Элемент ответа

@XmlRootElement(name="response")
public class Response {
  private String code;
  private int fiscalYear;
  private List<MentalHealthDays> mentalHealthDays;

  @Override
  public String toString() {
    return "Response{" +
            "code='" + code + '\'' +
            ", fiscalYear=" + fiscalYear +
            ", mentalHealthDays=" + mentalHealthDays +
            '}';
  }

  @XmlElement
  public String getCode() {
    return code;
  }


  public void setCode(String code) {
    this.code = code;
  }

  @XmlElement
  public int getFiscalYear() {
    return fiscalYear;
  }


  public void setFiscalYear(int fiscalYear) {
    this.fiscalYear = fiscalYear;
  }

  @XmlElement
  public List<MentalHealthDays> getMentalHealthDays() {
    return mentalHealthDays;
  }

  public void setMentalHealthDays(List<MentalHealthDays> mentalHealthDays) {
    this.mentalHealthDays = mentalHealthDays;
  }
}

Внутренний класс

public class MentalHealthDays {
  String type;
  int visitsAllowed;
  int visitsUser;

  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }

  public int getVisitsAllowed() {
    return visitsAllowed;
  }

  public void setVisitsAllowed(int visitsAllowed) {
    this.visitsAllowed = visitsAllowed;
  }

  public int getVisitsUser() {
    return visitsUser;
  }

  public void setVisitsUser(int visitsUser) {
    this.visitsUser = visitsUser;
  }

  @Override
  public String toString() {
    return "MentalHealthDays{" +
            "type='" + type + '\'' +
            ", visitsAllowed=" + visitsAllowed +
            ", visitsUser=" + visitsUser +
            '}';
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...