首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要计算kml文件中有多少个子标记。

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

Stack Overflow用户
提问于 2015-06-04 18:38:01
回答 1查看 60关注 0票数 1

我有一些工作要转换kml文件并插入到mysql数据库中。

我有点搞不懂我的kml文件下有多少个子标记文件夹

这里有一些kml文件

代码语言:javascript
复制
<?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>

这是另一个

代码语言:javascript
复制
<?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>

我现在要计算的代码是

代码语言:javascript
复制
$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)的子文件夹标记忽略其他

结果我从两个kml文件中得到的是来自另一个样本的2 shold是3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 10:30:05

最后,我发现了一个小窍门

代码语言:javascript
复制
$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']);

简单的切换到索引数组有很大帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30651610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档