Thursday, 1 January 2015

How can I join XmlAdapter to my @XmlRootElement



I have some XML



<?xml version="1.0" encoding="UTF-8"?>
<CAT>
<CATALOG>
<CD>
<title>affffff</title>
<year>1475</year>
</CD>
<CD>
<title>affffff</title>
<year>1475</year>
</CD>
</CATALOG>
</CAT>


For parsing with XmlAdapter i use next mapping



@XmlRootElement (name = "CAT")
@XmlAccessorType(XmlAccessType.FIELD)
public class Catalog {

@XmlElement (name = "CATALOG")
@XmlJavaTypeAdapter(MapAdapter.class)
private Map<String, Item> properties;


but if I will exclude next XML tag (example below, same example but without tag "CAT")



<CATALOG>
<CD>
<title>affffff</title>
<year>1475</year>
</CD>
<CD>
<title>affffff</title>
<year>1475</year>
</CD>
</CATALOG>


I can not modify my mapping and put XmlAdapter on @XmlRootElement (name = "CATALOG") What I try bellow: (it is not working, XmlAdapter not matching...)



@XmlRootElement (name = "CATALOG")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlJavaTypeAdapter(MapAdapter.class)
public class Catalog {

@XmlElement (name = "CD")
private Map<String, Item> properties;


Question


How can I avoid this problem and connect my custom XmlAdapter to root XML tag ?


No comments:

Post a Comment