JAXB Unmarshall исключение - неожиданный элемент - PullRequest
7 голосов
/ 02 марта 2012

Я использовал файл .xsd для генерации классов Java, а с файлом XML мне нужно отключить.

Я использую этот код:

JAXBContext objJAXBContext = JAXBContext.newInstance("my.test");

// create an Unmarshaller
Unmarshaller objUnmarshaller = objJAXBContext.createUnmarshaller();

FileInputStream fis = new FileInputStream("test.xml");

JAXBElement<Root> objMyRoot = (JAXBElement<Root>) objUnmarshaller.unmarshal(fis);

Root mRoot = objMyRoot.getValue();

и я получаю эту ошибку:

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Root"). Expected elements are (none)

Я видел много решений, но в моем проекте ничего не работает.

Что я могу попытаться сделать?

Ответы [ 2 ]

16 голосов
/ 29 марта 2012

В вашем корне xml отсутствует атрибут пространства имен (uri). Ты лучше попробуй это на XMLRootElement ...

@XmlRootElement(name = "root", namespace="")
4 голосов
/ 23 сентября 2013

Попробуйте

StreamSource streamSource = new StreamSource("test.xml")
JAXBElement<Root> objMyRoot = (JAXBElement<Root>) objUnmarshaller.unmarshal(streamsource, Root.class);
...