2013-01-23 68 views
0

这是一个解组xml文件的java方法。org.xml.sax.SAXParseException:使用jaxbUnmarshaller过早结束文件

我查找了这个错误的几个问题,但我找不到答案。

@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

你能有一个小的输入文件复制并显示XML输入? –

+0

http://www.filedropper.com/filebookings这里是xml文件。 –

+0

http://www.filedropper.com/flightinfo这是xsd文件 –

回答

0

flightinfo.xsd中有错误。该TNS:命名空间的文档中声明..

录制的原因:UndeclaredPrefix:无法解析 'TNS:FlightAvailableOffers' 作为一个QName:前缀 'TNS' 未声明

提示:

您可以通过在线工具验证xml是否符合xsd。

我建议以下的.. XML Validation against XML Schema Document