HTML单元下载kml格式文件

时间:2012-07-10 15:15:52

标签: java htmlunit

这是html中的代码,它提供了href,我想通过java中的链接下载kml文件。我不知道如何通过这些代码获取kml文件来点击并保存文件。

HTML:

        <div class="section tab" style="display:block;" >
            <ul>
                <li>
                <a href="/trip/27887/download/?fileformat=gpx" class="trip_download_bg trip_down_icon">GPX格式文件下载</a>
                <div class="trip_down_content">
                    <div class="trip_down_content_part_1">需要银两:3</div>
                    <label class="trip_down_content_part_2">内容介绍:</label>
                    <p class="trip_down_p">
                    GPX格式轨迹文件是GPS数据文件通用格式,目前市面上大部分GPS设备都支持导出GPX文件格式。此文件是将作者原GPS轨迹文件经过格式转换和标准化后自动生成。
                    </p>
                    <div class="cleanFix"></div>
                </div>
                <div class="cleanFix"></div>
                </li>
                <li>
                <a href="/trip/27887/download/?fileformat=kml" class="trip_download_bg trip_down_icon" id="kml_icon">KML格式文件下载</a>
                <div class="trip_down_content">
                    <div class="trip_down_content_part_1">需要银两:3</div>
                    <label class="trip_down_content_part_2">内容介绍:</label>
                    <p class="trip_down_p">
                    KML格式轨迹文件是用于GoogleEarth客户端显示GPS轨迹路线和航点信息的文件格式。此文件是将作者原GPS轨迹文件经过格式转换和标准化后自动生成。
                    </p>
                    <div class="cleanFix"></div>
                </div>
                <div class="cleanFix"></div>
                </li>

如何使用Java单击链接并保存KML文件?

<a href="/trip/27887/download/?fileformat=kml" class="trip_download_bg trip_down_icon" id="kml_icon">KML格式文件下载</a>

Java代码:

List<HtmlElement> nlink = downloadPage.getElementsByIdAndOrName("kml_icon");
for(int k=0;k<nlink.size();k++) {
    String templink = nlink.get(k).getAttribute("href");    
    if(templink.contains("fileformat=kml")) { 
        System.out.println("href====>"+templink);
        downloadPage.getAnchorByHref(templink);
        //InputStream is = templink.click().getWebResponse().getContentAsStream();
    }
}

1 个答案:

答案 0 :(得分:0)

使用此过程应该更容易:

    Page kmlPage = null;
    for (HtmlAnchor a : downloadPage.getAnchors()) {
        if (a.getHrefAttribute().contains("trip/27887/download/?fileformat=kml")) {
            String url = a.getHrefAttribute();
            if (!url.startsWith("http")) {
                url = "http://www.hostname.com" + url;

            }
            kmlPage = client.getPage(url);
            // you can also do it it simplier if this below works
            // kmlPage = a.click();

        }
    }

    String contentType = kmlPage.getWebResponse().getContentType();

    if (contentType.contains("kml")) {
        InputStream kmlStream = factPage.getWebResponse().getContentAsStream();
    }