跨越此帖一,所以這裏是我在我的應用程序中使用的函數代碼的一部分,以便從字符串kmlText中提取地點標記名稱&座標。
if (kmlText != null & kmlText.length() > 0) {
// Change case of relevant tags to match our search string case
kmlText = kmlText.replaceAll("(?i)<Placemark>", "<Placemark>")
.replaceAll("(?i)</Placemark>", "</Placemark>")
.replaceAll("(?i)<name>", "<name>")
.replaceAll("(?i)</name>", "</name>")
.replaceAll("(?i)<coordinates>", "<coordinates>")
.replaceAll("(?i)</coordinates>", "</coordinates>");
// Get <Placemark> tag
String[] kmlPlacemarks = kmlText.split("</Placemark>");
if (kmlPlacemarks.length > 0) {
for (Integer i = 0; i < kmlPlacemarks.length; i++) {
// Add '</Placemark>' to the end - actually not necessary
kmlPlacemarks[i] += "</Placemark>";
if (kmlPlacemarks[i].indexOf("<Placemark>") > -1)
/* Trim front to start from '<Placemark>'
Otherwise additional tags may be in between leading
to parsing of incorrect values especially Name */
kmlPlacemarks[i] = kmlPlacemarks[i].substring(kmlPlacemarks[i].indexOf("<Placemark>"));
}
String tmpPlacemarkName;
String tmpPlacemarkCoordinates;
for (String kmlPlacemark: kmlPlacemarks)
if ((kmlPlacemark.indexOf("<name>") > -1 && kmlPlacemark.indexOf("</name>") > -1) &&
(kmlPlacemark.indexOf("<coordinates>") > -1 && kmlPlacemark.indexOf("</coordinates>") > -1)) {
tmpPlacemarkCoordinates = kmlPlacemark.substring(kmlPlacemark.indexOf("<coordinates>") + 13, kmlPlacemark.indexOf("</coordinates>"));
tmpPlacemarkName = kmlPlacemark.substring(kmlPlacemark.indexOf("<name>") + 6, kmlPlacemark.indexOf("</name>"));
}
}
}
令人驚歎!它工作完美!我沒有看到Javadocs,:S(對不起!) 但我下載它,然後我會讀它。 我在Java中是「新」,有些東西我根本聽不懂,但是,我會閱讀這些jdoc,瞭解api;) 再次......謝謝! ! – Shudy 2013-03-26 14:11:43
不客氣!我不得不說這是一個奇怪的API,因爲你必須投入一個'Feature'來查看它實際上是什麼,'instanceof'實際上是在'OOP'中的實踐,我猜那些人知道他們什麼時候應該處理什麼想要爲'kml'和kml'xml schema'製作一個API,強制他們這樣做。對你來說一個很好的幫助就是在調試器中查看一個特性來查看它裏面的內容。你還必須注意,在kml文檔中可能包含其他xml命名空間,例如'gs','xal'等......它們也記錄在javadoc中。 – A4L 2013-03-26 16:54:29