J'ai ce xmlUnmarshal Liste aux types
<data-set>
<list-property name="columns">...</list-property>
<list-property name="resultSet">...</list-property>
<data-set>
Nécessité de désorganiser ce pour objet:
public class DataSet {
private Columns columns;
private ResultSet resultSet;
...
}
Aidez-moi à mettre en œuvre que si possible.
Mise à jour Ce que j'ai essayé de faire:
public class DataSet {
@XmlElement("list-property")
@XmlJavaTypeAdapter(DataSetListPropertyAdapter.class)
private Columns columns;
@XmlElement("list-property")
@XmlJavaTypeAdapter(DataSetListPropertyAdapter.class)
private ResultSet resultSet;
...
}
public class DataSetListPropertyAdapter extends XmlAdapter<ListProperty, ListProperty> {
@Override
public ListProperty unmarshal(ListProperty v) throws Exception {
ListProperty listProperty;
switch (v.getName()) {
case "columns":
listProperty = new Columns();
break;
case "resultSet":
listProperty = new ResultSet();
break;
default:
listProperty = new ListProperty();
}
listProperty.setStructure(v.getStructure());
return listProperty;
}
@Override
public ListProperty marshal(ListProperty v) throws Exception {
return v;
}
}
public class Columns extends ListProperty {
public Columns() {
name = "columns";
}
}
public class ListProperty extends NamedElement implements PropertyType{
@XmlElement(name = "structure")
private List<Structure> structure = new ArrayList<>();
}
@XmlTransient
public class NamedElement {
@XmlAttribute(name = "name", required = true)
protected String name;
}
Quand aller unmarshalling alors seulement le premier élément d'objets annotés analysés. Un autre est nul. Quand je commente en premier, alors la seconde est analysée.
Thx pour votre réponse. Je pense que c'est ce dont j'ai besoin. Mais j'ai essayé d'installer MOXy et n'ai pas eu de succès. Le conteneur d'applications WebSphere que j'utilise a déjà JAXB Provider. Comment puis-je l'utiliser. J'ai essayé de changer les options du classloader en PARENT_LAST mais j'ai ensuite rencontré une erreur com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Impossible de charger la webapp: javax.servlet.ServletContainerInitializer: Provider org.springframework.web.SpringServletContainerInitializer n'est pas un sous-type. WebSphere 8.5.5.11 –
Avez-vous suivi les instructions suivantes: http://www.eclipse.org/eclipselink/documentation/2.5/solutions/websphere.htm? –
Je pense que ça devrait être une autre question. THX –