php解析xmlファイル
2544 ワード
/******************************************
* XML
* @param string $str
* @return true, false
*******************************************/
function xml_parser($str){
$xml_parser = xml_parser_create();
if(!xml_parse($xml_parser,$str,true)){
xml_parser_free($xml_parser);
return false;
}else {
return true;
}
}
/********************************************
* @ GPX ,
* @$filename:
*******************************************/
private function readGPX($filename)
{
$xmlDoc = new DOMDocument();
$data=@file_get_contents($filename);
//$isok = strpos($data,"<?xml");
$isok = $this->xml_parser($data);
$result = array();
if($isok == true){
if($xmlDoc->load($filename)){
$XMLTrkseg = $xmlDoc->getElementsByTagName('trkseg')->item(0);
if(count($XMLTrkseg->getElementsByTagName('trkpt')) >= 1){
foreach($XMLTrkseg->getElementsByTagName('trkpt') as $trkpt){
$ele="";
$time = "";
$speed = "";
$lat = "";
$lon = "";
try{
$eles = $trkpt->getElementsByTagName("ele");
$ele = $eles->item(0)->nodeValue;
}catch(Exception $e){ }
try{
$times = $trkpt->getElementsByTagName("time");
$time = $times->item(0)->nodeValue;
if($time !=""){
$time = str_replace("T"," ",str_replace("Z","",$time));
}
}catch(Exception $e){ }
try{
$speeds = $trkpt->getElementsByTagName("speed");
if(isset($speeds->item(0)->nodeValue))
$speed = $speeds->item(0)->nodeValue;
}catch(Exception $e){ }
try{
$lat = $trkpt->getAttribute("lat");
}catch(Exception $e){ }
try{
$lon = $trkpt->getAttribute("lon");
}catch(Exception $e){ }
$x = array("ele"=>$ele,"time"=>$time,"speed"=>$speed,"lat"=>$lat,"lon"=>$lon);
$result[] = $x;
}
}
}
}
return $result;
}