unexpected element (uri:"", local:"Group"). Expected elements are <{}group>
Rencontrez une exception lors de la suppression du marshalling à partir de xml
JAXBContext jc = JAXBContext.newInstance(Group.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Group group = (User)unmarshaller.unmarshal(new File("group.xml"));
La classe de groupe n'a aucune annotation et group.xml contient juste des données.
Quelque chose peut en être la cause?
ObjectFactory
de sources incorrectes générées, ce qui est plus probable si vous mélangez deux répertoires sources générés différents.Réponses:
Il semble que votre document XML ait l'élément racine "Groupe" au lieu de "groupe". Vous pouvez:
la source
@XmlRootElement(name = "MB") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MB", propOrder = { "date", "time" })
mais je reçoisunexpected element (uri:"http://xx.title.com/new/response", local:"MB"). Expected elements are <{}Date>,<{}MB>,<{}Time>
aussi@XmlElement(name="Date", required = true)
sur chaque champ. Où et pourquoi ça va mal? J'ai également essayé de supprimer@XmlRootElement
!@XmlSchema
inpackage-info.java
, résolu maintenant.Vous devez mettre package-info.java dans votre package jaxb généré. Son contenu devrait être quelque chose comme ça
la source
Heureusement, la classe package-info n'est pas requise. J'ai pu résoudre mon problème avec la solution iowatiger08.
Voici mon correctif affichant le message d'erreur pour aider à joindre les points pour certains.
Message d'erreur
Code avant correction
Code après correction
Vous pouvez voir l'espace de noms ajouté à @XmlRootElement comme indiqué dans le message d'erreur.
la source
Après avoir cherché plus, l'élément racine doit être associé à un espace de nom de schéma comme Blaise le note. Pourtant, je n'avais pas de package-info java. Donc, sans utiliser l'annotation @XMLSchema, j'ai pu corriger ce problème en utilisant
J'espère que cela t'aides!
la source
C'est une solution pour un cas d'utilisation de niche, mais cela me touche à chaque fois. Si vous utilisez le générateur Eclipse Jaxb, il crée un fichier appelé package-info.
Si vous supprimez ce fichier, cela permettra à un XML plus générique d'être analysé. Essaie!
la source
J'ai eu le même problème .. Cela m'a aidé, je spécifie les mêmes noms de champs de mes classes que les noms de balises dans le fichier xml (le fichier provient d'un système externe).
Par exemple:
Mon fichier xml:
Ma classe de réponse:
Ma classe ESList:
Ma classe d'objets:
Ma classe RegionList:
Ma classe DemoUnmarshalling:
Il donne:
la source
Vous devez mettre la
package-info.java
classe dans le package de contextPath et mettre le code ci-dessous dans la même classe:la source
Même chose pour moi. Le nom de la classe de mappage était
Mbean
mais le nom de la racine de la balise l'étaitmbean
donc j'ai dû ajouter l'annotation:la source
J'ai eu le même problème. J'ai ajouté les attributs suivants à
<xs:schema..>
elementFormDefault = "qualifié" attributeFormDefault = "unqualified"et re-généré des classes java en exécutant xjc, ce qui a corrigé package-info.java.
Cela a résolu le problème pour moi.
la source
J'ai déjà le même problème et je change juste comme ci-dessous:
la source
J'ai eu le même problème, mon problème était que j'avais deux services Web différents avec deux fichiers wsdl différents. J'ai généré les sources dans le même package pour les deux services Web, ce qui semble être un problème. Je suppose que c'est à cause d'ObjectFactory et peut-être aussi à cause du package-info.java - parce que ceux-ci ne sont générés qu'une seule fois.
Je l'ai résolu, en générant les sources de chaque webservice dans un package différent. De cette façon, vous disposez également de deux fichiers ObjectFactories et package-info.java différents.
la source
Au cas où vous deviendriez fou parce que cela ne se produit que dans vos tests et que vous utilisez PowerMock, c'est la solution, ajoutez-la en haut de votre classe de test:
la source
Aucune des solutions mentionnées ici ne fonctionnait pour moi, j'obtenais toujours:
Exception dans le thread "main" javax.xml.bind.UnmarshalException: élément inattendu (uri: "java: XXX.XX.XX.XXX", local: "XXXXX")
Après de nombreuses recherches sur d'autres sites ci-dessous, le code a fonctionné pour moi-
la source
Si aucune des solutions ci-dessus ne fonctionne, essayez d'ajouter
@XmlRootElement(name="Group")
aux classes de groupe.la source