duanhe4155 2015-06-04 18:38
浏览 65
已采纳

需要计算kml文件中有多少个子标记

I have some work to convert kml files and insert to mysql database
I have a little bit confuse to count how many child tag folder under my kml files
here is a little kml files

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>FTTH 5 Cities 60K 20150409.kmz</name>
    <open>1</open>
    <Folder>
        <name>Kebun Jeruk, Jakarta</name>
        <Folder>
            <name>olt</name>
        </Folder>
        <Folder>
            <name>FEEDER</name>
        </Folder>
    </Folder>
    <Folder>
        <name>Kebun Jahe, Jakarta</name>
        <Folder>
            <name>olt</name>
        </Folder>
    </Folder>
</Document>
</kml>

and here is another one

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>FTTH 5 Cities 60K 20150409.kmz</name>
    <open>1</open>
    <Folder>
        <name>Kebun Jeruk, Jakarta</name>
        <Folder>
            <name>olt</name>
        </Folder>
        <Folder>
            <name>FEEDER</name>
        </Folder>
        <Folder>
            <name>CLUSTER FTTH KEBUN JERUK</name>
        </Folder>
    </Folder>
</Document>
</kml>

my present code to count is

$file = $_FILES['fileupload']['tmp_name'];
$xml_file = file_get_contents($file);
$xml = simplexml_load_string($xml_file);
$decodearray = json_decode(json_encode((array)$xml),1);

echo count($decodearray['Document']['Folder']);

need to count child Folder tag of Document->Folder(1st) ignore other
result I got from both kml file is 2 shold be 3 from another sample

</div>
  • 写回答

1条回答 默认 最新

  • duanhuancong1969 2015-06-05 10:30
    关注

    finally little trick I found do the result

    $file = 'file.kml';
    $xml_file = file_get_contents($file);
    $xml = simplexml_load_string($xml_file);
    $decodearray = json_decode(json_encode((array)$xml),1);
    
    $nowdatetime = date_create();
    $tstamp = date_timestamp_get($nowdatetime);
    
    switch (!isset($decodearray['Document']['Folder'][0])) {
      case true:
        $docfolder = $decodearray['Document']['Folder'];
        break;
      case false:
        $docfolder = $decodearray['Document']['Folder'][0];
        break;
    }
    echo count($docfolder['Folder']);

    simple switch case to indexing array help much..

    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧