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


Need to count how many child tag in kml files

我有一些工作转换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->文件夹(1)忽略其他
结果我从两个kml文件是2应该是3从另一个样本

最后我发现了做结果的小技巧

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