JAVA解析KML文件
时间:2019年11月25日 21:57:28
XML 文件
本文的 kml
文件为SuperMapIDeskTop根据三维模型导出的文件,导出文件为 kml 和 s3m,配套使用,其中 kml 文件如下
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>GeoModel3D#_2084369</name>
<visibility>1</visibility>
<Model>
<altitudeMode>absolute</altitudeMode>
<Location>
<longitude>406753.063525897</longitude>
<latitude>4324834.15664268</latitude>
<altitude>0.6</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
<Link>
<href>./KMLModels/GeoModel3D#_2084369.s3m</href>
</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);
}
版权声明:本文为Edgar_LQS原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。