Unmarshal attribute with JAXB
Bonjour,
Je suis entrain de tester JAXB (sdk6), j'ai eu des problème d'Unmarshalling des attributes.
Mes objets sont :
Code:
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:
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:
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:
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:
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