содержание Xml являетсяjavax.xml.bind.UnmarshalException: Неожиданный элемент (URI: "", местные: "" Страна) Ожидаемые элементы <{http://www.w3schools.com} СТРАНА>
<?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>
Это мой класс страна 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;
}
}
Пакет Info:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.w3schools.com",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.kk;
Основной класс
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);
}
я получил ошибку, как это:
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)
не знаю, где неисправность, я пробовал много, но я не могу понять это ..
Спасибо за ваш ответ .. Я попробовал второй вариант, и я получил это исключение: исключение в потоке «основной» java.lang.ClassCastException: com.kk.COUNTRY не может be cast to javax.xml.bind.JAXBElement \t at App.main (App.java:20) – user2523808
@ user2523808 - Поскольку ваш класс 'Customer' аннотируется с помощью' @ XmlRootElement', результатом будет экземпляр 'Customer' а не 'JAXBElement'. Полное объяснение см .: http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html –