Java Unmrashal嵌套元素与JAXB

Java Unmrashal嵌套元素与JAXB,java,xml,rest,spring-boot,jaxb,Java,Xml,Rest,Spring Boot,Jaxb,如何在mentalHealthDays元素的嵌套元素中提取数据 以下是我的XML: 这是我的密码: @SpringBootApplication public class DemoApplication { public static void main(String[] args) { try { File file = new File("C:\\Users\\JFarmer\\Projects\\

如何在
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();
              }


    }
    }
此外,如果您能提供任何资源以更好地理解,我们将不胜感激


我可以将类中的前两个元素转换为变量,但是,我不知道如何将嵌套元素中的数据提取为变量。我还有多个同名的嵌套元素。

您可以创建一个包含
MentalHealthDays
对象的
列表
变量,只需确保您使用与要取消整理的
xmlements
相同的名称命名属性即可:

响应元素

@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;
  }
}

在课堂上
MentalHealthDays
应该使用
visitsUsed
而不是
visitsUser
。应该添加
visitsleet
。这对我来说很有效!谢谢,非常感谢。但我必须改变的一件事是,我必须使用
private List mentalHealthDays=new ArrayList()否则我会得到一个空指针例外欢迎您,如果您不介意,可以将ASWER标记为正确的
@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 +
            '}';
  }
}