Deserizalization of xml is failing with nested tags

Viewed 44

I have an xml body similar to the following:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RootElement1>
  <Element1>
    <InnerElement1>Value</InnerElement1>
    <InnerElement2>Value</InnerElement2>
    <InnerElement3>Value</InnerElement3>
    <Element2>
      <NestedInnerElement>Value</NestedInnerElement>
    </Element2>
  </Element1>

  <Element1>
    <InnerElement1>Value</InnerElement1>
    <InnerElement2>Value</InnerElement2>
    <InnerElement3>Value</InnerElement3>
    <Element2>
      <NestedInnerElement>Value</NestedInnerElement>
      <NestedInnerElement>Value</NestedInnerElement>
      <NestedInnerElement>Value</NestedInnerElement>
    </Element2>
  </Element1>

  <Element1>
    <InnerElement1>Value</InnerElement1>
    <InnerElement2>Value</InnerElement2>
    <InnerElement3>Value</InnerElement3>
    <Element2>
      <NestedInnerElement>Value</NestedInnerElement>
      <NestedInnerElement>Value</NestedInnerElement>
    </Element2>
  </Element1>
</RootElement1>

My Java code is following:

@XMLRootElement(name = "RootElement1")
public class XMLRoot {

  private List<XMLElement1> xmlElem1;

  @XmlElement(name = "Element1")
  public List<XMLElement1> getElem1() {
    return xmlElem1;
  }
}
@XmlRootElement(name = "Element1")
public class XMLElement1 {

  private String innerElement1;
  private String innerElement2;
  private String innerElement3;
  private Element2 element2;

  @XmlElement(name = "InnerElement1")
  public String getInnerElement1() {
    return innerElement1;
  }

  @XmlElement(name = "InnerElement2")
  public String getInnerElement2() {
    return innerElement2;
  }

  @XmlElement(name = "InnerElement3")
  public String getInnerElement3() {
    return innerElement3;
  }

  @XmlElement(name = "Element2")
  public Element2 getElement2() {
    return element2;
  }
}
@XmlRootEllement(name = "Element2")
public class Element2 {

  private List<String> nestedValues;

  @XmlElement(name = "NestedInnerElement")
  public List<String> getNested() {
    return nestedValues
  }
} 

But deserialization is failing for NestedInnerElement, when I run in debug mode, I get Element=null. However, when I remove the outer xml elements and run the code for deserilaization of NestedInnerElement, it is working as expected.

These are the dependencies I am using in Gradle build file

   // https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api
    implementation("jakarta.xml.bind:jakarta.xml.bind-api:2.3.3")
    // https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime
    implementation("org.glassfish.jaxb:jaxb-runtime:2.3.6")
0 Answers
Related