unexpected element (uri:"", local:"Group"). Expected elements are <{}group>
Conozca una excepción al desagrupar de xml
JAXBContext jc = JAXBContext.newInstance(Group.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Group group = (User)unmarshaller.unmarshal(new File("group.xml"));
La clase de grupo no tiene ninguna anotación y group.xml solo contiene datos.
¿Cualquier cosa puede ser la causa?
ObjectFactory
de fuentes incorrectas de fuentes generadas, lo cual es más probable si está mezclando dos directorios de fuentes generados diferentes.Respuestas:
Parece que su documento XML tiene el elemento raíz "Grupo" en lugar de "grupo". Usted puede:
fuente
@XmlRootElement(name = "MB") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MB", propOrder = { "date", "time" })
perounexpected element (uri:"http://xx.title.com/new/response", local:"MB"). Expected elements are <{}Date>,<{}MB>,<{}Time>
también tengo@XmlElement(name="Date", required = true)
en cada campo. ¿Dónde y por qué va mal? ¡También intenté eliminar@XmlRootElement
!@XmlSchema
inpackage-info.java
, solucionado ahora.Debe poner package-info.java en su paquete jaxb generado. Su contenido debería ser algo así
fuente
Afortunadamente, la clase de información del paquete no es necesaria. Pude solucionar el problema mío con la solución iowatiger08.
Aquí está mi solución que muestra el mensaje de error para ayudar a unir los puntos para algunos.
Mensaje de error
Código antes de arreglar
Código tras corrección
Puede ver el espacio de nombres agregado a @XmlRootElement como se indica en el mensaje de error.
fuente
Después de buscar más, el elemento raíz debe asociarse con un espacio de nombres de esquema, como señala Blaise. Sin embargo, no tenía un paquete de información java. Entonces, sin usar la anotación @XMLSchema, pude corregir este problema usando
¡Espero que esto ayude!
fuente
Esta es una solución para un caso de uso bastante especializado, pero me atrapa cada vez. Si está utilizando el generador Eclipse Jaxb, crea un archivo llamado package-info.
Si elimina este archivo, permitirá analizar un xml más genérico. ¡Darle una oportunidad!
fuente
Tuve el mismo problema ... Me ayudó, especifico los mismos nombres de campo de mis clases que los nombres de las etiquetas en el archivo xml (el archivo proviene de un sistema externo).
Por ejemplo:
Mi archivo xml:
Mi clase de respuesta:
Mi clase de ESList:
Mi clase de artículo:
Mi clase RegionList:
Mi clase DemoUnmarshalling:
Da:
fuente
Debe poner la
package-info.java
clase en el paquete de contextPath y poner el código debajo en la misma clase:fuente
Lo mismo para mi. El nombre de la clase de mapeo era,
Mbean
pero el nombre de la raíz de la etiqueta era,mbean
así que tuve que agregar la anotación:fuente
Tuve el mismo problema. Agregué los siguientes atributos a
<xs:schema..>
elementFormDefault = "calificado" attributeFormDefault = "no calificado"y clases java regeneradas ejecutando xjc, que corrigió package-info.java.
Esto solucionó el problema para mí.
fuente
Ya tengo el mismo problema y simplemente lo cambio como se muestra a continuación:
fuente
Tuve el mismo problema, mi problema era que tenía dos servicios web diferentes con dos archivos wsdl diferentes. Genere las fuentes en el mismo paquete para ambos servicios web, lo que parece ser un problema. Supongo que se debe a ObjectFactory y quizás también a package-info.java, porque solo se generan una vez.
Lo resolví generando las fuentes para cada servicio web en un paquete diferente. De esta manera, también tiene dos ObjectFactories diferentes y archivos package-info.java.
fuente
En caso de que se esté volviendo loco porque esto sucede solo en sus Pruebas y está usando PowerMock, esta es la solución, agréguela en la parte superior de su clase de prueba:
fuente
Ninguna de las soluciones mencionadas aquí funcionó para mí, todavía estaba obteniendo:
Excepción en el hilo "principal" javax.xml.bind.UnmarshalException: elemento inesperado (uri: "java: XXX.XX.XX.XXX", local: "XXXXX")
Después de mucha investigación a través de otros sitios, el código a continuación funcionó para mí:
fuente
Si nada de lo anterior funciona, intente agregar
@XmlRootElement(name="Group")
a las clases grupales.fuente