org.xml.sax.SAXParseException:使用jaxbUnmarshaller过早结束文件

时间:2013-01-23 11:52:03

标签: java xml web-services soap xsd

这是一个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“

任何人都可以帮助我摆脱这个吗?

1 个答案:

答案 0 :(得分:0)

flightinfo.xsd中存在错误。 tns:命名空间在文档中声明..

记录原因:UndeclaredPrefix:无法解析&#39; tns:FlightAvailableOffers&#39;作为QName:前缀&#39; tns&#39;未声明

提示:

您可以通过在线工具对xsd验证xml。

我会推荐以下一个.. XML Validation against XML Schema Document