J'ai un problème de démarchage d'un document XML assez simple vers des objets Java simples.
Voici à quoi ressemble mon XML :
<?xml version="1.0" encoding="UTF-8"?>
<codeSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 vocab.xsd" xmlns="urn:hl7-org:v3">
<name>RoleCode</name>
<desc>Codes voor rollen</desc>
<code code="SON" codeSystem="2.16.840.1.113883.5.111" displayName="natural sonSon ">
<originalText>The player of the role is a male offspring of the scoping entity (parent).</originalText>
</code>
<code code="DAUC" codeSystem="2.16.840.1.113883.5.111" displayName="Daughter">
<originalText> The player of the role is a female child (of any type) of scoping entity (parent) </originalText>
</code>
</codeSystem>
Il fait partie d'un fichier beaucoup plus important, une spécification du système de code Hl7v3 pour représenter les relations entre les personnes.
J'ai créé deux classes Java pour les éléments CodeSystem et Code :
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CodeSystem
{
private String name;
private String desc;
@XmlElement(name = "code")
private List<Code> codes;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public class Code
{
@XmlAttribute
private String code;
@XmlAttribute
private String codeSystem;
@XmlAttribute
private String displayName;
private String originalText;
}
J'ai ajouté un package-info.java contenant :
@XmlSchema(
namespace = "urn:hl7-org:v3",
elementFormDefault = XmlNsForm.UNQUALIFIED,
attributeFormDefault = XmlNsForm.UNQUALIFIED,
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "", namespaceURI = "urn:hl7-org:v3")
}
)
package nl.topicuszorg.hl7v3.vocab2enum.model;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Le démarchage est assez simple :
JAXBContext context = JAXBContext.newInstance(CodeSystem.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
CodeSystem codeSystem = (CodeSystem) unmarshaller.unmarshal(new File(args[0]));
Cela donne toutefois lieu à un objet CodeSystem vide. Rien, à l'exception de l'élément Root, n'est analysé à partir du XML.
Je n'arrive pas à comprendre pourquoi les éléments nom, desc et code ne sont pas reconnus. Résident-ils dans un espace de noms différent de celui de l'élément Root ? Ils ne devraient pas l'être, car la déclaration d'espace de noms dans l'élément Root n'est pas fixée.
Qu'est-ce que je rate ?