Có thư viện nào để phân tích cú pháp KML không?Đọc và phân tích cú pháp KML trong java
Trả lời
Bạn sẽ tạo thư viện của riêng mình, nhưng bạn sẽ không viết bất kỳ mã nào.
Tôi khuyên bạn nên xem http://code.google.com/apis/kml/documentation/kmlreference.html. Từ đó bạn có thể lấy số XML Schema. Khi bạn đã có giản đồ, bạn có thể sử dụng JAXB để tạo cây đối tượng để dễ dàng phân tích cú pháp và viết KML.
This may also be a good resource, có vẻ như ai đó đã thực hiện nó!
Tôi đã đi xuống con đường này cho một chút thực hành, có một chút nấc cục ở chỗ có một vài yếu tố va chạm khi lược đồ được chạy qua trình biên dịch. Không có gì lớn, nhưng được chuẩn bị để viết một vài ràng buộc tùy chỉnh. – CurtainDog
Vì nó là xml bạn có thể đọc dữ liệu với bất kỳ phân tích cú pháp nhưng vẫn còn là một lib có sẵn tại http://code.google.com/p/libkml/ nó đã gán cho java nhưng lib là trong C++
Thư viện này trông đầy hứa hẹn cũng như:
http://code.google.com/p/javaapiforkml/
Thư viện cung cấp hỗ trợ cho đến bây giờ.
Dưới đây là thực hiện JSOUP tôi hy vọng nó sẽ giúp
public ArrayList<ArrayList<LatLng>> getCoordinateArrays() {
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;
String buffer;
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;
}
osmbonuspack tác phẩm thực sự tốt trong trường hợp xử lý dữ liệu kml.
nếu bạn sử dụng phòng thu android :)
dependencies {
compile 'org.jsoup:jsoup:1.8.1'
}
// find a way to read the file and store it in a string
String inputFileContents = "";
String xmlContent = inputFileContents;
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
for(Element e : doc.select("LineString").select("coordinates")) {
// the contents
System.out.println(e.text());
}
Bạn có thể có nhiều lựa chọn() phương thức gọi. tôi đơn giản hóa mã để:
Element e = doc.select("LineString").select("coordinates").first();
Lỗi: (20, 29) java: không tìm thấy phương thức phù hợp để phân tích cú pháp (org.jsoup.nodes.Document.OutputSettings.Syntax, java.lang.String, org.jsoup.parser.Parser) phương thức org.jsoup.Jsoup .parse (java.lang.String, java.lang.String, org.jsoup.parser.Parser) không được áp dụng (đối số không khớp, org.jsoup.nodes.Document.OutputSettings.Syntax không thể chuyển đổi thành java.lang. Chuỗi) phương thức – user3871754
nhập khẩu của tôi: nhập org.jsoup.Jsoup; nhập org.jsoup.nodes.Document; nhập org.jsoup.nodes.Element; nhập org.jsoup.parser.Parser; nhập tệp org.jsoup.nodes.Document.OutputSettings.Syntax.xml tĩnh; – user3871754
Đây là lựa chọn khác, file kml là một tập tin bình thường, người có cấu trúc file xml. Đây là ví dụ khác, cho tìm kiếm một vị trí cụ thể trong file nhiều placemarks
private static void readKML(InputStream fileKML, String nameCoordinates) {
String column = null;
Boolean folder = Boolean.TRUE;
Boolean placemark = Boolean.FALSE;
Boolean placeCorrect = Boolean.FALSE;
BufferedReader br = new BufferedReader(new InputStreamReader(fileKML));
try {
while ((column = br.readLine()) != null) {
if (folder) {
int ifolder = column.indexOf("<Folder>");
if (ifolder != -1) {
folder = Boolean.FALSE;
placemark = Boolean.TRUE;
continue;
}
}
if (placemark) {
String tmpLine = nameCoordinates;
tmpLine = tmpLine.replaceAll("\t", "");
tmpLine = tmpLine.replaceAll(" ", "");
String tmpColumn = column;
tmpColumn = tmpColumn.replaceAll("\t", "");
tmpColumn = tmpColumn.replaceAll(" ", "");
int name = tmpColumn.indexOf(tmpLine);
if (name != -1) {
placemark = Boolean.FALSE;
placeCorrect = Boolean.TRUE;
continue;
}
}
if (placeCorrect) {
int coordin = column.indexOf("<coordinates>");
if (coordin != -1) {
String tmpCoordin = column;
tmpCoordin = tmpCoordin.replaceAll(" ", "");
tmpCoordin = tmpCoordin.replaceAll("\t", "");
tmpCoordin = tmpCoordin.replaceAll("<coordinates>", "");
tmpCoordin = tmpCoordin
.replaceAll("</coordinates>", "");
String[] coo = tmpCoordin.split(",");
System.out.println("LONG: "+coo[0]);
System.out.println("LATI: "+coo[1])
break;
}
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return cresp;
}
ở đây thiếu dấu chấm phẩy: System.out.println ("LATI:" + coo [1]) – user3871754
- 1. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 2. Định dạng ngày có thể đọc và phân tích cú pháp của con người trong Java
- 3. phân tích cú pháp và đọc khóa công khai trong java
- 4. Ocaml - Tệp và phân tích cú pháp
- 5. Trình phân tích cú pháp email Java?
- 6. Phân tích cú pháp XML Java và bù gốc byte
- 7. FileNotFoundException khi đọc tệp .xml để phân tích cú pháp
- 8. Java - Đọc tệp BZ2 và giải nén/phân tích cú pháp khi đang bay
- 9. Python - cách đọc/phân tích cú pháp csv như dòng?
- 10. Cách phân tích cú pháp JSONArray trong Java với Json.simple?
- 11. Trình tạo trình phân tích cú pháp và trình phân tích cú pháp cho Common Lisp
- 12. Phân tích cú pháp chung của PB trong java
- 13. Phân tích cú pháp XML song song trong Java
- 14. csv phân tích cú pháp đọc tiêu đề
- 15. Phân tích cú pháp XML trong Java thông qua Groovy
- 16. Chuỗi JavaScript phân tích cú pháp trong Java
- 17. Phân tích cú pháp ngày RFC 2822 trong JAVA
- 18. Đọc HaskellKhông có lỗi phân tích cú pháp
- 19. Trình phân tích cú pháp để đọc Mục tiêu-C
- 20. Phân tích cú pháp một API Youtube Ngày trong Java
- 21. phân tích cú pháp đầu vào json trong hadoop java
- 22. Cách xóa #text khỏi phân tích cú pháp Nút của tôi trong phân tích cú pháp xml của Java dom
- 23. Học phân tích cú pháp trong python
- 24. Phân tích cú pháp RDF n-triple Java
- 25. Java/Android - Phân tích cú pháp ByteBuffer nhanh
- 26. Phân tích cú pháp không phân tích cú pháp đúng cách ("href") trong IE
- 27. cách phân tích cú pháp xml thành đối tượng java?
- 28. Phân tích cú pháp trong Emacs Lisp
- 29. Phân tích cú pháp IPv6 trong C
- 30. Phân tích cú pháp HTML trong perl
Dưới đây là thực hiện của tôi với Jsoup http://stackoverflow.com/questions/1140144/read-and-parse-kml- trong java/21283827 # 21283827 – alexandrius