생성 한 다음 웹 서버로 보낸 KML 파일에서 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 값에 액세스 할 수 있어야합니다. 또한 장소 표시에서 설명을 가져와야합니다.
위의 코드에서 StartTime을 얻으려고 한 줄을 변경했지만 작동하지 않습니다.
$element= $xml->xpath('//default:ExtendedData/Data[name="StartTime"]/value');
사람이 나를 도와, 또는 올바른 방향으로 날 지점 수 있다면 정말 많은 XML을 사용하지 않은 나는 정말 greatful 일 것이다.
감사합니다.
보십시오/kml/Document/ExtendedData/Data/value' ... –
제가 볼 수있는 한, 해당 파일에는 네임 스페이스가 없습니다. 그렇다면 네임 스페이스를로드하고 구성하는 이유는 무엇입니까? 왜 그냥 일반적인 네임 스페이스가 아닌 문서로 취급하지 않을까요? – ircmaxell
대신 네임 스페이스 URI 인'http : // www.opengis.net/kml/2.2'를 등록해야한다고 생각합니다. surce 접두어에 의존하는 것은 좋은 습관이 아닙니다. –