JAVA解析KMLファイル
14020 ワード
時間:2019年11月25日21:57:28
XMLファイル
本明細書の
ファイルフォーマットから分かるように、
テストコードは次のとおりです.
XMLファイル
本明細書の
kml
ファイルは、SuperMapIDeskTopが3次元モデルに基づいて導出したファイルであり、導出ファイルはkmlとs 3 mであり、kmlファイルは以下のように組み合わせて使用される."1.0" encoding="utf-8"?>
"http://www.opengis.net/kml/2.2">
GeoModel3D#_2084369
1</visibility>
absolute</altitudeMode>
406753.063525897</longitude>
4324834.15664268</latitude>
0.6</altitude>
</Location>
0</heading>
0</tilt>
0</roll>
</Orientation>
1</x>
1</y>
1</z>
</Scale>
./KMLModels/GeoModel3D#_2084369.s3m
</Link>
</Model>
</Placemark>
</Document>
</kml>
ファイルフォーマットから分かるように、
kml
ファイルとxml
ファイルの書き方は一致しているので、本稿ではxml
ファイルの解析法に基づいてkml
ファイルを解析し、java解析コードは以下の通りである. public JSONObject creatNodeList(File file, List<String> list){
JSONObject jsonObject = new JSONObject();
for(int i = 0; i < list.size(); i++) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
NodeList nodeList = null;
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document d = builder.parse(file);
nodeList = d.getElementsByTagName(list.get(i));
JSONObject jsonTemp = node(nodeList);
jsonObject.putAll(jsonTemp);
} catch (Exception e) {
e.printStackTrace();
}
}
return jsonObject;
}
public JSONObject node(NodeList list) {
JSONObject jsonObject = new JSONObject();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
NodeList childNodes = node.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
try {
jsonObject.put(childNodes.item(j).getNodeName(), childNodes.item(j).getFirstChild().getNodeValue());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
return jsonObject;
}
テストコードは次のとおりです.
/**
* XML
* @return JSONObject
*/
@Test
public void testResdKML(){
File file = new File("E:\\ExportModel.kml");
List<String> list = new ArrayList();
list.add("Placemark"); //
list.add("Location");
JSONObject jsonObject = readKml.creatNodeList(file, list);
System.out.println(jsonObject);
}