Как преобразовать строку XML в файл XML скачать - PullRequest
1 голос
/ 07 февраля 2012

В моем контроллере есть метод, который выглядит следующим образом:

@RequestMapping(value = "/test", method = RequestMethod.GET)
public @ResponseBody String getNameAsXML(HttpServletRequest httpRequest, @RequestParam("name") String name)
{
    ... some logic goes here to get the data from the db 
     by name and convert it to valid xml string
    ...
        return xmlString;
}

xmlString - строковое представление xml, который я хочу вернуть.

Когда я запускаю этот метод, я вижу xml в браузере, однако вместо этого я хотел бы дать пользователю всплывающее окно загрузки, чтобы он мог загрузить его как файл xml вместо того, чтобы показывать его в браузере.

Я думал о возвращении MultipartFile вместо String, но не совсем уверен, как это сделать.

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

Этого можно достичь, установив «Content-Disposition» в заголовке ответа на «attachment =».Рекомендуется установить тип ответа на правильный тип MIME («text / xml»).Однако это может быть сделано автоматически.

0 голосов
/ 07 февраля 2012

В итоге я добавил response.setHeader("Content-Disposition", "attachment; filename=test.xml"); к описанному выше методу Controller, и он работает нормально.

Я не на 100% доволен этим решением, так как я искал что-то более настраиваемое Spring, а не взламывал объект ответа, поэтому, если у кого-то есть идея получше, поделитесь.

Спасибо за ответы выше, но я думаю, что они такие же взломать, как и я :) 1006 *

0 голосов
/ 07 февраля 2012

Вы можете создать XML-файл из строки в Java следующим образом:

 public static void main(String[] args) {  
        String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"></soap:Envelope>";  

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  

        DocumentBuilder builder;  
        try  
        {  
            builder = factory.newDocumentBuilder();  

            // Use String reader  
            Document document = builder.parse( new InputSource(  
                    new StringReader( xmlString ) ) );  

            TransformerFactory tranFactory = TransformerFactory.newInstance();  
            Transformer aTransformer = tranFactory.newTransformer();  
            Source src = new DOMSource( document );  
            Result dest = new StreamResult( new File( "xmlFileName.xml" ) );  
            aTransformer.transform( src, dest );  
        } catch (Exception e)  
        {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  

, затем укажите ссылку на этот файл, чтобы пользователь мог его скачать.

см. http://www.coderanch.com/t/512978/java/java/convert-string-xml-file-java

также относится http://www.java.happycodings.com/XML/code17.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...