Bonjour,
Je suis entrain de tester JAXB (sdk6), j'ai eu des problème d'Unmarshalling des attributes.
Mes objets sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "contents") public class Content implements Serializable { @XmlElement(name = "published-content", required = true) protected ArrayList<ContentElement> publishedContents; @XmlElement(name = "unpublished-content", required = true) protected ArrayList<ContentElement> unpublishedContents; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement public class ContentElement implements Serializable { @XmlElement(name = "data", required = true) protected String data; @XmlElement(name = "link", required = true) protected ArrayList<Link> links; @XmlAttribute (name = "targetss", required = true) protected String targetss; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "link") public class Link implements Serializable { @XmlElement(name = "type", required = true) protected String type; @XmlElement(name = "title", required = true) protected String title; @XmlElement(name = "targetPath", required = true) protected String targetPath; }Mais j'ai toujours un null, par contre lorsque je fais un marshalling cet attribute est bien renseigné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 La méthode que j'utilise pour récupérer targetss est la suivante public static void unmarshal() { try { FileInputStream is = new FileInputStream("ContentType.xml"); JAXBContext importContext = JAXBContext.newInstance(Content.class); Unmarshaller unmarshaller = importContext.createUnmarshaller(); Content content = (Content) unmarshaller.unmarshal(is); ContentElement contentElement = content.getPublishedContents().get(0); System.out.println(contentElement.getTargetss()); } catch (Exception E) { E.printStackTrace(); } }
Voici le fichier xml que j’utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <contents> <published-content targetss="should not null" > <data >data</data> <link > <type>type</type> <title>title</title> <targetPath>myTarget</targetPath> </link> </published-content> </contents>
Merci d'avance
Partager