Xml文件到Java对象

时间:2018-07-11 08:41:45

标签: java jaxb unmarshalling

我将xml文件转换为Java对象。但是,我遇到了一些问题。

我有这样的XML文件:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:api="http://virtualmachine.service.instancemanager.copse.jp/">
   <soap:Body>
      <api:DetachVolumeResponse>
         <!--Optional:-->
         <DetachVolumeResponseType>
            <requestId>001</requestId>
            <volumeId>a</volumeId>
            <instanceId>b</instanceId>
            <device>c</device>
            <status>d</status>
            <attachTime>2012-01-23T12:00:00Z</attachTime>
         </DetachVolumeResponseType>
      </api:DetachVolumeResponse>
   </soap:Body>
</soap:Envelope>

这是我的代码:

SOAPMessage message;
        try {
            message = MessageFactory.newInstance().createMessage(null,
                    new ClassPathResource("D:\DetachVolume.xml").getInputStream());
        JAXBContext jaxbContext;
            jaxbContext = JAXBContext.newInstance(DetachVolumeResponseType.class);
        Unmarshaller jaxbUnmarshaller;
            jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            DetachVolumeResponseType detachVolumeResponseType = (DetachVolumeResponseType) jaxbUnmarshaller
                    .unmarshal(message.getSOAPBody().extractContentAsDocument());
            System.out.println(detachVolumeResponseType);
        } catch (IOException | SOAPException e) {
            e.printStackTrace();
        }catch (JAXBException e) {
            e.printStackTrace();
        }

程序显示错误,找不到文件,但是我的路径文件绝对正确。 请告诉我原因以及如何解决。谢谢

1 个答案:

答案 0 :(得分:0)

不要将d:\放在类路径资源中。

只需将文件路径相对于您的部署即可。

目标/类别 target / classes / dir1 / file1.txt

替换为此路径dir1 / file1.txt