当前位置: 首页 > 知识库问答 >
问题:

无法解组xml文件

都昊乾
2023-03-14

在我的项目中,我通过JaxB对象生成了xml文件。现在我再次希望现在将解组作为JAXB对象。当我试图解包时,它抛出了classcastException。

请查找我写的课程:

public class ReservationTest1 {

    public static void main(String []args) throws IOException, JAXBException
    {

        JAXBContext jaxbContext = JAXBContext.newInstance(com.hyatt.Jaxb.makeReservation.request.OTAHotelResRQ.class);
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        @SuppressWarnings("unchecked")
        JAXBElement bookingElement = (JAXBElement) unmarshaller.unmarshal(
                 new FileInputStream("D://myproject//Reservation.xml"));


        System.out.println(bookingElement.getValue());

    }
}

你能给我提供一些有用的信息来解决这个问题吗。

共有1个答案

易风华
2023-03-14

为什么你会得到ClassCastException

如果被解组的对象是用@XmlRootElement注释的,那么您将获得该类的实例,而不是JAXBElement的实例。

FileInputStream xml = new FileInputStream("D://myproject//Reservation.xml");
OTAHotelResRQ booking = (OTAHotelResRQ) unmarshaller.unmarshaller.unmarshal(xml);

始终获取域对象

如果您总是希望接收域对象的实例,而不管域对象或JAXBElement是否从散集操作中返回,则可以使用JAXBInsiSpector

FileInputStream xml = new FileInputStream("D://myproject//Reservation.xml");
Object result = unmarshaller.unmarshaller.unmarshal(xml);
OTAHotelResRQ booking = (OTAHotelResRQ) JAXBIntrospector.getValue(result);

始终获取JAXBElement

如果您希望始终接收JAXBElement的实例,您可以使用接受类参数的散集方法之一。

StreamSource xml = new StreamSource("D://myproject//Reservation.xml");
JAXBElement<OTAHotelResRQ> bookingElement = 
    unmarshaller.unmarshal(xml, OTAHotelResRQ.class);

了解更多信息

  • http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html
 类似资料:
  • 两天前,我犯了以下错误: 执行任务:[: app: assembleDebug] 配置项目:app registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection) 任务:app:buildInfoDebugLoader任务:app:preBuild-UP-DATE任务:core:preDebugBuild-up

  • 我使用的是Spring,无法读取Spring.xml文件。Application ationContext上下文=new ClassPathXmlApplication ationContext("Spring.xml");向我显示此错误:造成原因:java.io.FileNotFoundExcture:类路径资源[Spring.xml]无法打开,因为它不存在 xml路径强调文本

  • 本文向大家介绍python读取xml文件方法解析,包括了python读取xml文件方法解析的使用技巧和注意事项,需要的朋友参考一下   关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件。 什么是xml? xml即可扩展标记语言,它可以用来标记数据、定义数据类型,

  • 问题内容: 我如何在Java或C中使用vtd-xml解析如下的xml文件? 任何帮助,将不胜感激。 谢谢 问题答案: 我想其中有些取决于您要如何解析文件。 这是一个“非生产”示例,其中使用了一些有用的技术,包括: XPath选择(此处仅使用“ / *”) 浏览所有同级节点 通过子节点向下看 使用AutoPilot将节点属性提取到地图中 希望能帮助到你 产生以下输出: 添加带有AutoPilot循环

  • 如何在java或C中使用vtd xml解析如下xml文件? 任何帮助都将不胜感激。 谢谢

  • 问题内容: 我从一个教程中获取了以下代码: 将被突出显示,并显示两个错误: 容器类型中的方法add(Component)不适用于参数(JLabel) 无法解析类型javax.swing.JComponent。从所需的.class文件间接引用它 作为Java的新手,我不太了解Eclipse试图告诉我什么。我该怎么做才能使其正常工作? 编辑:代码运行时没有一行,因此问题不在于找不到JFrame或JLa