JAXB Unmarshaller - Inattendu élément Exception
Je suis en utilisant le JAXB analyseur pour convertir du XML envoyé via une requête http à un objet Java lors de la validation il contre mon schéma XSD. Le problème est que lorsque la unmarshal() la méthode est appelée, elle soulève cette exception:
javax.xml.bind.UnmarshalException: élément inattendu
(uri:"http://www.somedomain.com/", locale:"attribuer"). Éléments attendus
sont (aucun)
Si je supprime l'espace de noms à partir de mon élément XML racine il soulève les mêmes à l'exception de l'uri partie étant vide:
javax.xml.bind.UnmarshalException: élément inattendu
(uri:"", locale:"attribuer"). Éléments attendus
sont (aucun)
La unmarshalling code:
ServletInputStream xmlFile = request.getInputStream();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("PatientAssignment.xsd"));
JAXBContext jc = JAXBContext.newInstance(AssignType.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setSchema(schema);
unmarshaller.setEventHandler(new AssignValidationEventHandler(patientResponses));
assignments = (AssignType) unmarshaller.unmarshal(xmlFile);
Ma classe Java et package-info.java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AssignType", namespace = "http://www.somedomain.com/", propOrder = {
"patient"
})
public class AssignType {
@XmlElement(namespace = "http://www.somedomain.com/", required = true)
protected List<PatientAssignType> patient;
/* Getters and setters ommitted */
}
//package-info.java
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.somedomain.com/", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
Le XML que je suis en train de l'analyser:
<?xml version="1.0" encoding="UTF-8"?>
<assign xmlns="http://www.somedomain.com/">
<patientAssign xmlns="http://www.somedomain.com/">
<firstName>Buddy</firstName>
<lastName>Holly</lastName>
<email></email>
<dob></dob>
<phone></phone>
...
</patientAssign>
</assign>
Si quelqu'un pouvait me dire où je vais mal, ce serait très apprécié!
PatientAssignType
classe à la question s'il vous plaît.FYI - Puisque vous avez spécifié l'espace de noms et elementFormDefault sur le
@XmlSchema
d'annotation, vous n'aurez pas besoin de le spécifier dans les autres lieux (voir: blog.bdoughan.com/2010/08/jaxb-namespaces.html).OriginalL'auteur rawkfist0215 | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'un
@XmlRootElement
annotation sur votreAssignType
classe. Vous voudrez aussi pour ajoutername=patientAssign
à votre patient variable d'instance.OriginalL'auteur Pace