Xml 更新kml标记
我在谷歌地图kml上工作。我有几个shapefile,使用QGIS我已经将其转换为kml文件。我需要更新标记结构以应用BallookStyle。 我需要像这样转换标记结构Xml 更新kml标记,xml,regex,google-maps,kml,qgis,Xml,Regex,Google Maps,Kml,Qgis,我在谷歌地图kml上工作。我有几个shapefile,使用QGIS我已经将其转换为kml文件。我需要更新标记结构以应用BallookStyle。 我需要像这样转换标记结构 <SchemaData schemaUrl="#new_circle"> <SimpleData name="Name">7</SimpleData> <SimpleData name="gid"&
<SchemaData schemaUrl="#new_circle">
<SimpleData name="Name">7</SimpleData>
<SimpleData name="gid">1</SimpleData>
<SimpleData name="active_sub">4596</SimpleData>
<SimpleData name="net_additi">5181</SimpleData>
<SimpleData name="gross_addi">3917</SimpleData>
<SimpleData name="churn">4617</SimpleData>
</SchemaData>-->
7.
1.
4596
5181
3917
4617
-->
皈依
<Data name="name">
<value>7</value>
</Data>
<Data name="active_sub">
<value>4596</value>
</Data>
<Data name="net_additi">
<value>5181</value>
</Data>
<Data name="gross_additi">
<value>3917</value>
</Data>
<Data name="churn">
<value>4617</value>
</Data>
7.
4596
5181
3917
4617
是否有任何查找和替换算法或任何其他软件将shp导出到kml我检查了不同的软件和在线转换器,也检查了ogr2ogr,但所有这些都提供了带有简单数据的标记结构。
提前感谢….我已经通过使用jdom库创建java类来更新kml。为此,我需要执行一些手动任务。删除kml标记,然后处理文件。这是我为此创建的类
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
/**
* @author amit
*/
public class XMLParser {
private void getXMLDetails() {
try {
SAXBuilder builder = new SAXBuilder();
File file = new File("sample.xml");
if (file.exists()) {
Document document = (Document) builder.build(file);
Element root = document.getRootElement();
System.out.println(root.getChildren());
Element firstTag = root.getChild("Folder");
//firstTag.getAttribute("tag").setValue("file");
List rootdata = firstTag.getChildren();
System.out.println(rootdata);
for(Iterator<Element> i = rootdata.iterator(); i.hasNext(); ) {
Element rootitem =i.next();
if(rootitem.getName() =="Placemark"){
System.out.println(rootitem.getChildren("ExtendedData"));
List listdata = rootitem.getChild("ExtendedData").getChild("SchemaData").getChildren();
for(Iterator<Element> j = listdata.iterator(); j.hasNext(); ) {
Element item =j.next();
System.out.println(item);
String gidval = item.getText();
Element gid = new Element("value").setText(gidval);
item.setText("");
item.addContent(gid);
System.out.println("test");
}
}
}
String des = new XMLOutputter().outputString(document);
des = des.replaceAll("SimpleData", "Data");
des = des.replaceAll("</SchemaData>", "");
des = des.replaceAll("<SchemaData schemaUrl=\"#new_area\">", "");
System.out.println("String: " + des.replaceAll("SimpleData", "Data"));
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(des);
fileWriter.close();
} else {
System.out.println("File does not exist");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String argS[]) {
try {
new XMLParser().getXMLDetails();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
导入java.io.File;
导入java.io.FileWriter;
导入java.util.Iterator;
导入java.util.List;
导入org.jdom.Document;
导入org.jdom.Element;
导入org.jdom.input.SAXBuilder;
导入org.jdom.output.XMLOutputter;
/**
*@作者阿米特
*/
公共类XMLParser{
私有void getXMLDetails(){
试一试{
SAXBuilder=新SAXBuilder();
File File=新文件(“sample.xml”);
if(file.exists()){
documentdocument=(Document)builder.build(file);
元素根=document.getRootElement();
System.out.println(root.getChildren());
元素firstTag=root.getChild(“文件夹”);
//firstTag.getAttribute(“tag”).setValue(“文件”);
List rootdata=firstTag.getChildren();
System.out.println(rootdata);
for(迭代器i=rootdata.Iterator();i.hasNext();){
元素rootitem=i.next();
if(rootitem.getName()=“Placemark”){
System.out.println(rootitem.getChildren(“ExtendedData”);
List listdata=rootitem.getChild(“ExtendedData”).getChild(“SchemaData”).getChildren();
for(迭代器j=listdata.Iterator();j.hasNext();){
元素项=j.next();
系统输出打印项次(项);
字符串gidval=item.getText();
元素gid=新元素(“值”).setText(gidval);
项目.setText(“”);
项目.添加内容(gid);
系统输出打印(“测试”);
}
}
}
String des=new XMLOutputter().outputString(文档);
des=des.replaceAll(“SimpleData”、“数据”);
des=des.replaceAll(“,”);
des=des.replaceAll(“,”);
System.out.println(“字符串:“+des.replaceAll”(“SimpleData”,“Data”));
FileWriter FileWriter=新的FileWriter(文件);
fileWriter.write(des);
fileWriter.close();
}否则{
System.out.println(“文件不存在”);
}
}捕获(例外情况除外){
例如printStackTrace();
}
}
公共静态void main(字符串参数[]){
试一试{
新建XMLParser().getXMLDetails();
}捕获(例外情况除外){
例如printStackTrace();
}
}
}
这里是jar的链接
谢谢