Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.xml.sax.SAXParseException:使用jaxbUnmarshaller提前结束文件_Java_Xml_Web Services_Soap_Xsd - Fatal编程技术网

Java org.xml.sax.SAXParseException:使用jaxbUnmarshaller提前结束文件

Java org.xml.sax.SAXParseException:使用jaxbUnmarshaller提前结束文件,java,xml,web-services,soap,xsd,Java,Xml,Web Services,Soap,Xsd,这是一种对xml文件进行解组的java方法 我找了几个关于这个错误的问题,但找不到答案 @WebMethod(operationName = "List_Flights") public List<FlightAvailableOffers> List_Flights() {//ArrayList<String[]> FlightAvailableOffers flighte = new FlightAvailableOffers();

这是一种对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;

    }   
}
@WebMethod(operationName=“List\u航班”)
公共列表\u Flights(){//ArrayList
FlightAvailableOffers flighte=新的FlightAvailableOffers();
航班=新航班();
List bookingAvailFlights=flight.getOffersBooking();
试一试{
File File=新文件(“Flight_Bookings.xml”);
JAXBContext JAXBContext=JAXBContext.newInstance(FlightAvailableOffers.class);
解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();
flight=(Flights)jaxbunmarshall.unmarshal(文件);
//List bookingAvailFlights=flight.getOffersBooking();
FlightAvailableOffers预订=新的FlightAvailableOffers();
迭代器itr=bookingAvailFlights.Iterator();
while(itr.hasNext()){
预订=(FlightAvailableOffers)itr.next();
预订航班。添加(预订);
}
}捕获(JAXBEException e){
System.out.println(e.getCause());
}
返回预定航班;
}   
}
但当我运行此命令时,它会显示以下消息

“org.xml.sax.SAXParseException:文件过早结束 “马歇尔”


有人能帮我解决这个问题吗?

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

记录原因:未声明的前缀:无法将“tns:FlightAvailableOffers”解析为QName:未声明前缀“tns”

提示:

您可以通过在线工具根据xsd验证xml


我推荐下面的一种

您能用一个小的输入文件复制并显示xml输入吗?这是xml文件。这是xsd文件