将HTML内容保存在本地存储中

时间:2022-12-24 16:48:41

i want to fetch xml file from the links like

我想从链接中获取xml文件

http://api.worldbank.org/countries/GBR/indicators/NY.GDP.MKTP.KD.ZG?date=2004:2012

it returns a xml file, i don't know how to save this file in my folder named "temp" using java or javascripts, actually i don't want to display this result of that link to the user, I'm generating such links dynamically.

它返回一个xml文件,我不知道如何使用java或javascripts将此文件保存在名为“temp”的文件夹中,实际上我不想将该链接的结果显示给用户,我正在生成这样的文件动态链接。

please help!!!

3 个解决方案

#1


10  

I recommend you to use an HTML parser library like jsoup in this situation. Please have a look at the below steps for better under standing:

我建议你在这种情况下使用像jsoup这样的HTML解析器库。请查看以下步骤以获得更好的信息:

1. Download jsoup core library  (jsoup-1.6.1.jar) from http://jsoup.org/download
2. Add the jsoup-1.6.1.jar file to your classpath.
3. Try the below code to save the xml file from the URL.

package com.overflow.stack;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 *
 * @author sarath_sivan
 */
public class XmlExtractor {

    public static StringBuilder fetchXmlContent(String url) throws IOException {
        StringBuilder xmlContent = new StringBuilder();
        Document document = Jsoup.connect(url).get();
        xmlContent.append(document.body().html());
        return xmlContent;
    }

    public static void saveXmlFile(StringBuilder xmlContent, String saveLocation) throws IOException {
        FileWriter fileWriter = new FileWriter(saveLocation);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(xmlContent.toString());
        bufferedWriter.close();
        System.out.println("Downloading completed successfully..!");
    }

    public static void downloadXml() throws IOException {
        String url = "http://api.worldbank.org/countries/GBR/indicators/NY.GDP.MKTP.KD.ZG?date=2004:2012";
        String saveLocation = System.getProperty("java.io.tmpdir")+"sarath.xml";
        XmlExtractor.saveXmlFile(XmlExtractor.fetchXmlContent(url), saveLocation);
    }

    public static void main(String[] args) throws IOException {
        XmlExtractor.downloadXml();
    }

}

4. Once the above code is executed successfully, a file named "sarath.xml" should be there in your temp folder.

Thank you!

#2


0  

Well your body is XML not HTML, just retrieve it using Apache HttpClient, and pump the read InputStream to a FileOutputStream. What was the problem? Do you want to save parsed content in a formatted form?

那么你的身体是XML而不是HTML,只需使用Apache HttpClient检索它,并将读取的InputStream泵送到FileOutputStream。有什么问题?您想以格式化的形式保存已解析的内容吗?

#3


0  

public String execute() {
        try {
            String url = "http://api.worldbank.org/countries/GBR/indicators/NY.GDP.MKTP.KD.ZG?date=2004:2012";
            String saveLocation = System.getProperty("java.io.tmpdir")+"sarath.xml";
            XmlExtractor.saveXmlFile(XmlExtractor.fetchXmlContent(url), saveLocation);
        } catch (Exception e) {
            e.printStackTrace();
            addActionError(e.getMessage());
        }
        return SUCCESS;
    }

#1


10  

I recommend you to use an HTML parser library like jsoup in this situation. Please have a look at the below steps for better under standing:

我建议你在这种情况下使用像jsoup这样的HTML解析器库。请查看以下步骤以获得更好的信息:

1. Download jsoup core library  (jsoup-1.6.1.jar) from http://jsoup.org/download
2. Add the jsoup-1.6.1.jar file to your classpath.
3. Try the below code to save the xml file from the URL.

package com.overflow.stack;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 *
 * @author sarath_sivan
 */
public class XmlExtractor {

    public static StringBuilder fetchXmlContent(String url) throws IOException {
        StringBuilder xmlContent = new StringBuilder();
        Document document = Jsoup.connect(url).get();
        xmlContent.append(document.body().html());
        return xmlContent;
    }

    public static void saveXmlFile(StringBuilder xmlContent, String saveLocation) throws IOException {
        FileWriter fileWriter = new FileWriter(saveLocation);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(xmlContent.toString());
        bufferedWriter.close();
        System.out.println("Downloading completed successfully..!");
    }

    public static void downloadXml() throws IOException {
        String url = "http://api.worldbank.org/countries/GBR/indicators/NY.GDP.MKTP.KD.ZG?date=2004:2012";
        String saveLocation = System.getProperty("java.io.tmpdir")+"sarath.xml";
        XmlExtractor.saveXmlFile(XmlExtractor.fetchXmlContent(url), saveLocation);
    }

    public static void main(String[] args) throws IOException {
        XmlExtractor.downloadXml();
    }

}

4. Once the above code is executed successfully, a file named "sarath.xml" should be there in your temp folder.

Thank you!

#2


0  

Well your body is XML not HTML, just retrieve it using Apache HttpClient, and pump the read InputStream to a FileOutputStream. What was the problem? Do you want to save parsed content in a formatted form?

那么你的身体是XML而不是HTML,只需使用Apache HttpClient检索它,并将读取的InputStream泵送到FileOutputStream。有什么问题?您想以格式化的形式保存已解析的内容吗?

#3


0  

public String execute() {
        try {
            String url = "http://api.worldbank.org/countries/GBR/indicators/NY.GDP.MKTP.KD.ZG?date=2004:2012";
            String saveLocation = System.getProperty("java.io.tmpdir")+"sarath.xml";
            XmlExtractor.saveXmlFile(XmlExtractor.fetchXmlContent(url), saveLocation);
        } catch (Exception e) {
            e.printStackTrace();
            addActionError(e.getMessage());
        }
        return SUCCESS;
    }