【问题标题】:Need to count how many child tag in kml files需要计算kml文件中有多少子标签
【发布时间】:2015-06-04 18:38:01
【问题描述】:

我有一些工作要转换 kml 文件并插入到 mysql 数据库
我有点困惑地计算我的 kml 文件下有多少子标签 文件夹
这是一些 kml 文件

<?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>

还有一个

<?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>

我现在要计算的代码是

$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']);

需要计算 Document->Folder(1st) 的子 Folder 标签忽略其他
我从两个 kml 文件得到的结果是 2 应该是 3 来自另一个样本

【问题讨论】:

    标签: php arrays json xml kml


    【解决方案1】:

    终于找到了一个小窍门

    $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']);

    简单的 switch case 到索引数组有很大帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2023-03-03
      • 2012-09-29
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多