| Code Coverage | ||||||||||
| Classes and Traits | Functions and Methods | Lines | ||||||||
| Total |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 1 | CRAP |  | 0.00% | 0 / 29 | 
| KmlParser |  | 0.00% | 0 / 1 |  | 0.00% | 0 / 1 | 72 |  | 0.00% | 0 / 29 | 
| parseString($inputString) |  | 0.00% | 0 / 1 | 72 |  | 0.00% | 0 / 29 | |||
| <?php | |
| /** | |
| * | |
| */ | |
| namespace aae\geo\parsers { | |
| /** | |
| * @author Axel Ancona Esselmann | |
| * @package aae\geo\parsers | |
| */ | |
| class KmlParser { | |
| public static function parseString($inputString) { | |
| $xml = new \DOMDocument('1.0'); | |
| // $dom->recover = TRUE; | |
| $xml->loadXML($inputString); | |
| #@$xml = simplexml_load_string($inputString); | |
| // $xml = simplexml_load_string($inputString, "SimpleXMLElement", LIBXML_NOERROR | LIBXML_ERR_NONE); | |
| if ($xml === false) { | |
| throw new \Exception("Error parsing XML", 404141238); | |
| } | |
| $tree = new \aae\adt\Tree; | |
| $folders = $xml->getElementsByTagName( "Folder" ); | |
| foreach ($folders as $folder) { | |
| $placemarks = $folder->getElementsByTagName( "Placemark" ); | |
| foreach ($placemarks as $placemark) { | |
| $lineStrings = $folder->getElementsByTagName( "LineString" ); | |
| foreach ($lineStrings as $lineString) { | |
| $sequence = new \aae\math\geospatial\Sequence(); | |
| $coords = $placemark->getElementsByTagName( "coordinates" ); | |
| #DANGEROUS! SWALLOWS ERRORS! TEMPORARY FIX | |
| if (is_null($coords->item(0))) { | |
| $this->errors = true; | |
| break; | |
| } | |
| $coord = explode(" ", $coords->item(0)->nodeValue); | |
| for ($i = 0; $i < count($coord); $i++) { | |
| $pieces = explode(",", trim($coord[$i])); | |
| if (count($pieces) === 3) { | |
| $point = new \aae\math\geospatial\Point($pieces[1], $pieces[0], $pieces[2]); | |
| $sequence->addElement($point); | |
| } | |
| } | |
| $tree->append($sequence); | |
| } | |
| } | |
| } | |
| return $tree; | |
| } | |
| } | |
| } |