Is there any way to do mapping with single java bean for such simple xml:
-
some url
You could use an XmlAdapter:
ParentIdAdapter
public class ParentIdAdapter extends XmlAdapter {
public String unmarshal(AdaptedParentId value) {
return value.id;
}
public AdaptedParentId marshal(String value) {
AdaptedParentId adapted = new AdaptedParentId();
adapted.id = value;
return adapted;
}
public static class AdaptedParentId {
@XmlAttribute
public String id;
}
}
Item
@XmlRootElement( name = "item" )
public class Item {
@XmlElement( name = "item-url" )
private String url;
@XmlElement( name = "parent" )
@XmlJavaTypeAdapter(ParentIdAdapter.class)
private String parentId;
}
If you are using EclipseLink MOXy as your JAXB provider then you could leverage the @XmlPath extension to do the following:
@XmlRootElement( name = "item" )
public class Item {
@XmlElement( name = "item-url" )
private String url;
@XmlPath("parent/@id")
private String parentId;
}