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;
}
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();
        }
    }
Mais j'ai toujours un null, par contre lorsque je fais un marshalling cet attribute est bien renseigné

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