javax.xml.bind.UnmarshalException: inattendu élément (uri:“”, locale: le“PAYS”) les éléments Attendus sont <{http://www.w3schools.com}PAYS>
Contenu du fichier Xml est
<?xml version="1.0" encoding="UTF-8"?>
<COUNTRY xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com Country_Details.xsd">
<STATE name="AndhraPradesh">
<DISTRICT name="Chittoor">
<PHONENO>255258</PHONENO>
<ADDRESS>bazarr Street</ADDRESS>
</DISTRICT>
<DISTRICT name="Kadapa">
<PHONENO>24137457</PHONENO>
<ADDRESS>congtres Street</ADDRESS>
</DISTRICT>
</STATE>
<STATE>
...
</STATE>
</COUNTRY>
C'est mon pays, la classe
Country.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = " ", propOrder = { "state" })
@XmlRootElement(name = "COUNTRY")
public class COUNTRY {
@XmlElement(name = "STATE", required = true)
protected List<Districts> state;
public List<Districts> getSTATE() {
if (state == null) {
state = new ArrayList<Districts>();
}
return this.state;
}
}
Package Info:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.w3schools.com",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.kk;
Classe principale
public class App {
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(AddressDetails.class,
COUNTRY.class, Details.class, Districts.class, ObjectFactory.class);
Unmarshaller um = context.createUnmarshaller();
JAXBElement<COUNTRY> jaxb = (JAXBElement<COUNTRY>) um
.unmarshal(new File("src//Country.xml"));
COUNTRY value = jaxb.getValue();
System.out.println(value);
}
Je suis d'erreur comme ceci:
Exception in thread "main"
javax.xml.bind.UnmarshalException:unexpected element(uri:"", local:"COUNTRY").
Expected elements are <{http://www.w3schools.com}COUNTRY>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent
(UnmarshallingContext.java:642)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement
(Loader.java:116)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1049)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at App.main(App.java:20)
ne sais pas où la faute est, j'ai essayé beaucoup de choses, mais je suis incapable de le comprendre..
OriginalL'auteur user2523808 | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Basé sur vos mappages de l'JAXB impl s'attend à ce que le document XML à l'espace de noms qualifiés. Vous pouvez le fixer dans l'une des façons suivantes:
Ajouter l'espace de noms de qualification pour le document XML.
Supprimer l'espace de noms de métadonnées à partir de la JAXB mappages. Vous avez spécifié à l'aide de l'ensemble des
@XmlSchema
annotation.Utiliser un
XmlFilter
à appliquer les bonnes informations d'espace de noms pour votre document XML.Depuis votre
Customer
classe est annotée avec@XmlRootElement
le résultat sera une instance deCustomer
et pasJAXBElement<Customer>
. Pour une explication complète, voir: blog.bdoughan.com/2012/07/jaxb-and-root-elements.htmlOriginalL'auteur bdoughan