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")