Как получить определенный тег в файле KML с помощью php DOMDocument?

У меня есть файл .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>myFile.shp</name>
<Style id="style1">
<PolyStyle>
<color>ff00ff00</color>
</PolyStyle>
</Style>
<Folder id="layer 0">
<name>background</name>
<Placemark>
<styleUrl>#style1</styleUrl>
<LineString>
<coordinates>
-2.94040373,54.83409343483 -2.943834733,54.893839393
</coordinates>
</LineString>
</Placemark>
</Folder>
</Document>
</kml>

Вопрос

Как я могу получить этот файл как DOMDocument, и получить ВСЕ элемент тега с именем «координаты»?

Цель состоит в том, чтобы иметь возможность получить координаты, даже если форма файла изменяется, например:

<kml xmlns="http://earth.google.com/kml/2.0">
<Folder>
<name>OpenLayers export</name>
<description>No description available</description>
<Placemark>
<name>OpenLayers.Feature.Vector_7341</name>
<description>No description available</description>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-2.94040373,54.83409343483 -2.943834733,54.893839393
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Folder>
</kml>

Мои попытки были перебрать документ, используя simplexml_load_file() но, к сожалению, я не был бы надежным, так как «порядок тегов» изменяется между этими двумя документами, и я не знаю, почему он не следует единому шаблону (что побудило меня задать этот вопрос, потому что он может иметь более 2 форм KML? Поправь меня если я не прав).

0

Решение

использование DOMDocument класс для разбора XML. Тогда используйте getElementsByTagName() чтобы получить все coordinates элементы.

$dom = new DOMDocument();
// load file
$dom->load("file.kml");
// get coordinates tag
$coordinates = $dom->getElementsByTagName("coordinates");
foreach($coordinates as $coordinate){
echo $coordinate->nodeValue;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]