import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
public class Test {
private static String name;//编号名称(迭代器会重置数据,需要使用常量先保存)
public static void main(String[] args) throws Exception {
//MultipartFile file 如果上传的文件类型为MultipartFile,使用以下方式转换流
//InputStream inputStream = file.getInputStream();
File file = new File("E:/test.kml");
InputStream in = new FileInputStream(file);
parseXmlWithDom4j(in);
}
public static void parseXmlWithDom4j(InputStream input) throws Exception {
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(input);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root = document.getRootElement();//获取kml文件的根结点
listNodes(root);
}
//遍历当前节点下的全部节点
public static void listNodes(Element node) {
System.out.println("当前结点的名称:" + node.getName() + "当前节点的值" + node.getTextTrim());
if ("name".equals(node.getName())) {
name = node.getTextTrim();
//System.out.println("当前结点的名称:" + node.getName() + "当前节点的值" + node.getTextTrim());
}
if ("coordinates".equals(node.getName())) {
String s = node.getTextTrim();
String[] str = s.split(",");
Double d0 = new Double(str[0]);//经度
Double d1 = new Double(str[1]);//纬度
Double d2 = new Double(str[2]);//海拔
//System.out.println("当前结点的名称:" + node.getName() + "当前节点的值" + node.getTextTrim());
}
// TODO 保存数据等操作,看业务需要
//同一时候迭代当前节点以下的全部子节点
//使用递归
Iterator<Element> iterator = node.elementIterator();
while (iterator.hasNext()) {
Element e = iterator.next();
listNodes(e);
}
}
}
java解析kml文件,获取文件内容
最新推荐文章于 2024-07-06 02:47:25 发布