Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 更新kml标记_Xml_Regex_Google Maps_Kml_Qgis - Fatal编程技术网

Xml 更新kml标记

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"&

我在谷歌地图kml上工作。我有几个shapefile,使用QGIS我已经将其转换为kml文件。我需要更新标记结构以应用BallookStyle。 我需要像这样转换标记结构

            <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的链接
谢谢