unexpected element (uri:"", local:"Group"). Expected elements are <{}group>
Встречаем исключение при демаршалинге из xml
JAXBContext jc = JAXBContext.newInstance(Group.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Group group = (User)unmarshaller.unmarshal(new File("group.xml"));
Класс группы не имеет аннотации, а файл group.xml содержит только данные.
Что-нибудь может быть причиной?
ObjectFactory
из сгенерированных источников, что более вероятно, если вы смешиваете два разных сгенерированных исходных каталога.Ответы:
Похоже, в вашем XML-документе есть корневой элемент «Группа» вместо «группа». Ты можешь:
источник
@XmlRootElement(name = "MB") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MB", propOrder = { "date", "time" })
но я получаю, что уunexpected element (uri:"http://xx.title.com/new/response", local:"MB"). Expected elements are <{}Date>,<{}MB>,<{}Time>
меня также есть@XmlElement(name="Date", required = true)
по каждому полю. Где и почему что-то не так? Я тоже пробовал удалить@XmlRootElement
!@XmlSchema
инpackage-info.java
, теперь исправлена.Вам нужно поместить package-info.java в созданный вами пакет jaxb. Его содержание должно быть примерно таким
источник
К счастью, класс информации о пакете не требуется. Я смог решить мою проблему с помощью решения iowatiger08.
Вот мое исправление, показывающее сообщение об ошибке, чтобы помочь некоторым объединить точки.
Сообщение об ошибке
Код перед исправлением
Код после исправления
Вы можете видеть, что пространство имен добавлено в @XmlRootElement, как указано в сообщении об ошибке.
источник
После более тщательного изучения корневой элемент должен быть связан с пространством имен схемы, как отмечает Блейз. Тем не менее, у меня не было java с информацией о пакете. Поэтому, не используя аннотацию @XMLSchema, я смог исправить эту проблему, используя
Надеюсь это поможет!
источник
Это исправление для довольно нишевого варианта использования, но оно меня беспокоит каждый раз. Если вы используете генератор Eclipse Jaxb, он создает файл с именем package-info.
Если вы удалите этот файл, это позволит проанализировать более общий xml. Попробуйте!
источник
У меня была такая же проблема .. Мне помогло, я указываю те же имена полей моих классов, что и имена тегов в файле xml (файл поступает из внешней системы).
Например:
Мой xml файл:
Мой класс ответа:
Мой класс ESList:
Мой класс предмета:
Мой класс RegionList:
Мой класс DemoUnmarshalling:
Это дает:
источник
Вам нужно поместить
package-info.java
класс в пакет contextPath и поместить код ниже в том же классе:источник
У меня тоже самое. Имя класса сопоставления было,
Mbean
но корневое имя тега былоmbean
таким, поэтому мне пришлось добавить аннотацию:источник
Я была такая же проблема. Я добавил следующие атрибуты в
<xs:schema..>
elementFormDefault = "qualified" attributeFormDefault = "unqualified"и повторно сгенерировал классы java, запустив xjc, что исправило package-info.java.
Это устранило проблему для меня.
источник
У меня уже есть такая же проблема, и я просто меняю ее, как показано ниже:
источник
У меня была такая же проблема, моя проблема заключалась в том, что у меня было два разных веб-сервиса с двумя разными wsdl-файлами. Я сгенерировал исходники в одном пакете для обоих веб-сервисов, что кажется проблемой. Я предполагаю, что это из-за ObjectFactory и, возможно, также из-за package-info.java - потому что они генерируются только один раз.
Я решил это, создав исходники для каждого веб-сервиса в отдельном пакете. Таким образом, у вас также есть два разных файла ObjectFactories и package-info.java.
источник
Если вы сходите с ума, потому что это происходит только в ваших тестах, и вы используете PowerMock, это решение, добавьте его поверх своего тестового класса:
источник
Ни одно из упомянутых здесь решений не помогло мне, я все еще получал:
Исключение в потоке «main» javax.xml.bind.UnmarshalException: неожиданный элемент (uri: «java: XXX.XX.XX.XXX», локальный: «XXXXX»)
После долгих исследований на других сайтах ниже код работал для меня -
источник
Если ничего из вышеперечисленного не работает, попробуйте добавить
@XmlRootElement(name="Group")
в Групповой класс.источник