我想知道是否有人能帮助我。
我有一个KML文件(谷歌地图XML),我需要将坐标提取到二维数组。
文件格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<kml
xmlns="http://earth.google.com/kml/2.1">
<Document>
<Placemark>
<name>Im a name</name>
<Point>
<coordinates>138.611798,-34.926053</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Im a name</name>
<Point>
<coordinates>138.611798,-34.926053</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Im a name</name>
<Point>
<coordinates>138.611798,-34.926053</coordinates>
</Point>
</Placemark>
[...]
我需要能够返回具有以下格式的数组:
Array
(
[0] => Array
(
[0] => 138.611798
[1] => -34.926053
)
[1] => Array
(
[0] => 138.611798
[1] => -34.926053
)
我的KML文件将包含很多点,因此我需要能够自动执行此操作。
任何帮助都会非常感激。
由于
答案 0 :(得分:2)
您可以使用XPath。只是不要忘记设置命名空间。
$xml = simplexml_load_file('kml.xml');
$xml->registerXPathNamespace('ns', 'http://earth.google.com/kml/2.1');
$names = $xml->xpath('//ns:coordinates');
$coordinates = array();
foreach($names as $name) {
$coordinates[] = explode( ',', $name );
}
print_r( $coordinates );
答案 1 :(得分:1)
您可以使用SimpleXML获取所需的值并将它们推送到数组中。例如:
$data = array();
$xml = simplexml_load_file('path/to/file.kml');
foreach($xml->Document->Placemark as $placemark) {
list($x, $y) = explode(',', $placemark->Point->coordinates); // explode coordinates by comma
$data[] = array($x, $y);
}
echo '<pre>';
print_r($data);