Java Android解析KML文件的时间

Java Android解析KML文件的时间,java,android,Java,Android,我一直在试图找出如何获得两个地点之间的旅行时间步行,驾驶等 据我所知,准确地做到这一点的唯一方法是从谷歌检索KML文件,然后对其进行解析 研究表明,然后需要使用SAX对其进行解析。问题是,我似乎不知道如何提取正确的变量。有人知道这是否/如何做到吗 非常感谢你的帮助 Pete.使用SAX解析器解析XML KML的基本含义: 在这个示例中,您可以看到猜测的时间存储在description标记中。它保存在KML文件的最后一个Placemark标记中,并且有一个Route标记 使用SAX解析器获取此标记

我一直在试图找出如何获得两个地点之间的旅行时间步行,驾驶等

据我所知,准确地做到这一点的唯一方法是从谷歌检索KML文件,然后对其进行解析

研究表明,然后需要使用SAX对其进行解析。问题是,我似乎不知道如何提取正确的变量。有人知道这是否/如何做到吗

非常感谢你的帮助


Pete.

使用SAX解析器解析XML KML的基本含义:

在这个示例中,您可以看到猜测的时间存储在description标记中。它保存在KML文件的最后一个Placemark标记中,并且有一个Route标记


使用SAX解析器获取此标记并使用正则表达式提取时间应该很容易

public ArrayList<ArrayList<LatLng>> getAllTracks() {
    ArrayList<ArrayList<LatLng>> allTracks = new ArrayList<ArrayList<LatLng>>();

    try {
        StringBuilder buf = new StringBuilder();
        InputStream json = MyApplication.getInstance().getAssets().open("track.kml");
        BufferedReader in = new BufferedReader(new InputStreamReader(json));
        String str;

        while ((str = in.readLine()) != null) {
            buf.append(str);
        }

        in.close();
        String html = buf.toString();
        Document doc = Jsoup.parse(html, "", Parser.xmlParser());
        ArrayList<String> tracksString = new ArrayList<String>();
        for (Element e : doc.select("coordinates")) {
            tracksString.add(e.toString().replace("<coordinates>", "").replace("</coordinates>", ""));
        }

        for (int i = 0; i < tracksString.size(); i++) {
            ArrayList<LatLng> oneTrack = new ArrayList<LatLng>();
            ArrayList<String> oneTrackString = new ArrayList<String>(Arrays.asList(tracksString.get(i).split("\\s+")));
            for (int k = 1; k < oneTrackString.size(); k++) {
                LatLng latLng = new LatLng(Double.parseDouble(oneTrackString.get(k).split(",")[0]), Double.parseDouble(oneTrackString.get(k)
                        .split(",")[1]));
                oneTrack.add(latLng);
            }
            allTracks.add(oneTrack);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return allTracks;
}

谢谢你的回复。不过我明白这一点,那就是如何从中获取时间域。你能发布一个从谷歌收到的KML文件示例吗?当然,这里有一个示例:好的,当我查看它时,我发现猜测的路线时间并没有保存在一个额外的域中。它保存在路线的“描述”字段中。我更新了帖子,看看吧。
public ArrayList<ArrayList<LatLng>> getAllTracks() {
    ArrayList<ArrayList<LatLng>> allTracks = new ArrayList<ArrayList<LatLng>>();

    try {
        StringBuilder buf = new StringBuilder();
        InputStream json = MyApplication.getInstance().getAssets().open("track.kml");
        BufferedReader in = new BufferedReader(new InputStreamReader(json));
        String str;

        while ((str = in.readLine()) != null) {
            buf.append(str);
        }

        in.close();
        String html = buf.toString();
        Document doc = Jsoup.parse(html, "", Parser.xmlParser());
        ArrayList<String> tracksString = new ArrayList<String>();
        for (Element e : doc.select("coordinates")) {
            tracksString.add(e.toString().replace("<coordinates>", "").replace("</coordinates>", ""));
        }

        for (int i = 0; i < tracksString.size(); i++) {
            ArrayList<LatLng> oneTrack = new ArrayList<LatLng>();
            ArrayList<String> oneTrackString = new ArrayList<String>(Arrays.asList(tracksString.get(i).split("\\s+")));
            for (int k = 1; k < oneTrackString.size(); k++) {
                LatLng latLng = new LatLng(Double.parseDouble(oneTrackString.get(k).split(",")[0]), Double.parseDouble(oneTrackString.get(k)
                        .split(",")[1]));
                oneTrack.add(latLng);
            }
            allTracks.add(oneTrack);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return allTracks;
}