将输入字符串转换为文件对象

时间:2016-05-25 06:53:37

标签: java string file jaxb

我想将输入字符串(只是xml)转换为JAVA对象。我正在使用JAXB。但我的问题来自调用应用程序我将以字符串的形式接收XML。但是jaxbUnmarshaller.unmarshal(inputXML);期望输入中有一个FILE对象。因此,有一些方法可以将输入字符串转换为FILE对象,而无需手动将此传入内容写入磁盘。

以下是我的方法片段

public void xmlToObject(String inputXML){
        try{
            JAXBContext jaxbContext = JAXBContext.newInstance(LineItemsBeanList.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            LineItemsBeanList objreq= (LineItemsBeanList) jaxbUnmarshaller.unmarshal(inputXML);
            printLineItems(objreq.getLineItemsBean());
            nba.processLineItems(objreq.getLineItemsBean());
            nba.printFinalSetOfRules();
        }
        catch(Exception e){
            System.out.println(e);

        }
    } 

1 个答案:

答案 0 :(得分:0)

您无需创建File对象来解决此问题。

取自docs for JAXB Unmarshaller

  

使用javax.xml.transform.stream.StreamSource从StringBuffer解组:

JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" );
Unmarshaller u = jc.createUnmarshaller();
StringBuffer xmlStr = new StringBuffer( "<?xml version="1.0"?>..." );
Object o = u.unmarshal( new StreamSource( new StringReader( xmlStr.toString() ) ) );

在您的情况下,您可以使用类似的方法从字符串中解组:

LineItemsBeanList objreq = (LineItemsBeanList) jaxbUnmarshaller.unmarshal(
    new StreamSource(new StringReader(inputXML)));