У меня проблема с попыткой разобрать биты данных с помощью PHP из файла KML, который я сгенерировал и затем отправил на мой веб-сервер. Я хочу вывести элементы и сохранить их в базе данных. Хранить их не проблема, просто вывести некоторые элементы.
Вот пример файла KML, который я пытаюсь проанализировать:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>RandomName</name>
<description>-</description>
<Style id="line">
<LineStyle>
<color>CD0000FF</color>
<width>4</width>
</LineStyle>
</Style>
<ExtendedData>
<Data name="StartTime">
<value>1302653118875</value>
</Data>
<Data name="EndTime">
<value>1302653159274</value>
</Data>
<Data name="Type">
<value>cycle</value>
</Data>
</ExtendedData>
<Placemark>
<name>PlaceName2</name>
<description><p>Current Altitude: <b>0.0 ft</b><br/>Current Speed: <b>0.0 m/s</b><br/>Total Distance: <b>0.608 km</b></p></description>
<styleUrl>#line</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<coordinates>
-122.083393,37.427768,0.0
-122.084395,37.427768,0.0
</coordinates>
</LineString>
</Placemark>
</Document>
</kml>
Я использую следующий код и могу получить самое первое имя и описание.
function getTrackDescription($file){
$xml = simplexml_load_file($file);
$namespace = $xml->getDocNamespaces();
if(isset($namespace[""])){
$xml->registerXPathNamespace("default",$namespace[""]);
}
$element= $xml->xpath('//default:description');
return $element[0];
}
Я могу получить эти элементы, но когда я пытаюсь получить что-то еще, я просто ничего не получаю. Мне нужно иметь доступ к значениям в ExtendedData - StartTime, EndTime и Type. Мне также нужно получить описание из метки.
Я изменил 1 строку из приведенного выше кода, пытаясь получить StartTime, но он не работает.
$element= $xml->xpath('//default:ExtendedData/Data[name="StartTime"]/value');
Если бы кто-нибудь мог мне помочь или указать мне правильное направление, я был бы очень рад, потому что я не слишком много использовал XML.
Спасибо.