这是一个unmarshalls xml文件的java方法。
我查找了此错误的几个问题,但我找不到答案。
@WebMethod(operationName = "List_Flights")
public List<FlightAvailableOffers> List_Flights() {//ArrayList<String[]>
FlightAvailableOffers flighte = new FlightAvailableOffers();
Flights flight = new Flights();
List<FlightAvailableOffers> bookingAvailFlights = flight.getOffersBooking();
try {
File file = new File("Flight_Bookings.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(FlightAvailableOffers.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
flight = (Flights)jaxbUnmarshaller.unmarshal(file);
//List<FlightAvailableOffers> bookingAvailFlights = flight.getOffersBooking();
FlightAvailableOffers booking = new FlightAvailableOffers();
Iterator itr = bookingAvailFlights.iterator();
while (itr.hasNext()) {
booking = (FlightAvailableOffers) itr.next();
bookingAvailFlights.add(booking);
}
} catch (JAXBException e) {
System.out.println(e.getCause());
}
return bookingAvailFlights;
}
}
但是当我运行它时会显示此消息
“org.xml.sax.SAXParseException:文件过早结束 jaxbUnmarshaller“
任何人都可以帮助我摆脱这个吗?
答案 0 :(得分:0)
flightinfo.xsd中存在错误。 tns:命名空间在文档中声明..
记录原因:UndeclaredPrefix:无法解析&#39; tns:FlightAvailableOffers&#39;作为QName:前缀&#39; tns&#39;未声明
提示:
您可以通过在线工具对xsd验证xml。
我会推荐以下一个.. XML Validation against XML Schema Document