java - 使用 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\\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;
    }

}

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

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

最佳答案

您可以创建一个包含 MentalHealthDays 对象的 List 变量,只需确保您为该属性命名的名称与您想要的 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 +
            '}';
  }
}

关于java - 使用 JAXB 解码嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071720/

相关文章:

c# - RestSharp 响应返回空

json - 无法生成 JSON - javax.ws.rs.WebApplicationException : com. sun.jersey.api.MessageException

java - 在 Java 中排除一个值

java - Ubuntu 上的 Netbeans + tomcat

java - 使用 XMLUnit 2.X 比较 xml 文件时忽略特定节点的特定属性

xml - 在配置文件中配置多个电子邮件别名

java - addOnLayoutChangeListener 和 onLayout(changed) 的区别?

java - 根据字符出现的次数对数组进行排序

xml - Golang XML Unmarshal 只返回子节点的最后一个值

web-services - 将敏感信息发送到 REST 服务