У меня есть .kml файл формы, как это:Как получить конкретный тег в KML-файле, используя php DOMDocument?
<?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
и получить ALL тег элемент с именем "координатами" ?
Цель состоит в том, чтобы иметь возможность получить координаты, даже если изменение формы файла, как, например:
<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? исправьте меня, если я неправильно).
Почему вы не используете регулярные выражения? Таким образом, вам не нужно полагаться на порядок элементов. – Dez
Звучит умная идея, нужно попробовать. Я даю вам знать. –
Решение regexp тоже работало, но я предпочитаю, чтобы синтаксический анализатор разбивал мой файл на теги и перемещался по ним, а не открывался для проблемы с регулярным выражением. В любом случае спасибо @Dez за ваш вклад. –