Access attribute of internal element in the most simple way

后端 未结 2 530
一整个雨季
一整个雨季 2020-12-20 06:12

Is there any way to do mapping with single java bean for such simple xml:


   some url
   

        
2条回答
  •  无人及你
    2020-12-20 06:49

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

提交回复
热议问题