Parse KML-файл с PHP

Есть ли способ разобрать Google Maps * .kml-файл с simple_xml_load_file ("*. Kml")?

Мне нужно сохранить в имени моей базы данных и координатах каждого полигона, зарегистрированного в моем KML-файле. На моем скрипте PHP simple_xml_load_file ("*. Kml") возвращает false, поэтому я не могу его прочитать.

<?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> <Schema> ... </Schema> <Style id="FEATURES"> ... </Style> <Folder> <Placemark> <name> name </name> <Polygon> <LinearRing> <coordinates> coordinates </coordinates> </LinearRing> </Polygon> </Placemark> <Placemark> ... </Placemark> </Folder> </Document> </kml> 

Мне нужно «имя» и «координаты» значений для каждой «метки».

Solutions Collecting From Web of "Parse KML-файл с PHP"

Первая строка:

 <?xml version="1.0" encoding="UTF-8"?> 

Сообщает PHP, что это документ, закодированный в UTF-8, но ваша ошибка говорит, что он не кодируется как UTF-8. Это документ, который вы создали с помощью текстового редактора? Если это так, вы можете обычно использовать свой редактор, чтобы сохранить его в UTF-8. Или вы, вероятно, можете использовать PHP для обнаружения кодировки и изменения этой первой строки.

Если XML strucutre является тем, что вы опубликовали, вы можете попробовать: –

 $xml = simplexml_load_file(...); $childs = $xml->Document->Folder->children(); foreach ($childs as $child) { // child object is same as -> Placemark } 

Пример :-

 Объект SimpleXMLElement
 (
     [name] => 
                     имя

     [Polygon] => Объект SimpleXMLElement
         (
             [LinearRing] => Объект SimpleXMLElement
                 (
                     [координат] => 
                             координаты

                 )

         )

 )
 The xml structure is exactly that xml you sent: For example: <Document> <Placemark> <name>356HH</name> <description> </description> <Polygon><outerBoundaryIs><LinearRing><coordinates>some cordinates here</coordinates></LinearRing></innerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> <Placemark> </document> 

И это мой php-код:

 <?php $completeurl = "2.xml"; $xml = simplexml_load_file($completeurl); $placemarks = $xml->Document->Placemark; $con=mysqli_connect("localhost","root","","j3"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $query = ''; $run=''; for ($i = 0; $i < sizeof($placemarks); $i++) { $coordinates = $placemarks[$i]->name; $cor_d = explode(' ', $placemarks[$i]->Polygon->outerBoundaryIs->LinearRing->coordinates); $qtmp=array(); foreach($cor_d as $value){ $tmp = explode(',',$value); $ttmp=$tmp[1]; $tmp[1]=$tmp[0]; $tmp[0]=$ttmp; $qtmp[]= '(' . $tmp[0] . ',' .$tmp[1].')'; } $cor_d = json_encode($qtmp); $query .='\''.$coordinates.'\', \''.$cor_d.'\''; $run .="INSERT INTO jos_rpl_addon_zipinfo (name, boundary) VALUES (".$query." );"; //echo $run; //break; } mysqli_query($con,$run); //echo $run; mysqli_close($con); ?>