Преобразование входной строки в объект File

Я хочу преобразовать входную строку, которая является ничем иным, как xml, в объект JAVA. Я использую JAXB для того же самого. Но моя проблема в том, что от вызова приложения я буду получать XML в виде строки. Но jaxbUnmarshaller.unmarshal(inputXML);ожидает объект файла во входных данных. Так что есть какой-то способ, которым я могу преобразовать входную строку в файловый объект без ручной записи этого входящего содержимого на диск.

Ниже приведен фрагмент моего метода

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 ответ

  1. Для решения этой проблемы не требуется создавать объект File.

    Взято из документов для JAXB Unmarshaller:

    Unmarshalling от StringBuffer с помощью javax.XML.преобразиться.поток.StreamSource:

    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)));