PHP-将XML数据提取到2d数组

PHP-将XML数据提取到2d数组,php,arrays,xml,simplexml,kml,Php,Arrays,Xml,Simplexml,Kml,我想知道是否有人能帮我一把 我有一个KML文件(GoogleMapsXML),我需要将坐标提取到一个2D数组中 文件格式如下: <?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <Document> <Placemark> <name>Im a name</

我想知道是否有人能帮我一把

我有一个KML文件(GoogleMapsXML),我需要将坐标提取到一个2D数组中

文件格式如下:

<?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>
        [...]
我的KML文件将包含相当多的点,所以我需要能够自动做到这一点

任何帮助都将不胜感激


谢谢

您可以使用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);
$data=array();
$xml=simplexml_load_文件('path/to/file.kml');
foreach($xml->Document->Placemark作为$Placemark){
列表($x,$y)=分解(“,”,$placemark->Point->coordinates);//用逗号分解坐标
$data[]=数组($x,$y);
}
回声';
打印(数据);

您可以使用XPath实现这一点。只是别忘了设置名称空间


$xml=simplexml_load_文件('kml.xml');
$xml->registerXPathNamespace('ns','http://earth.google.com/kml/2.1');
$names=$xml->xpath('//ns:coordinates');
$coordinates=array();
foreach($name作为$name){
$coordinates[]=分解(“,”,$name);
}
打印(坐标);

您可以看看
$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);