Xml (gpx) ---> Php

grünes-huhn

Mitglied
Hallo,

Ich habe schon im XML-Unterforum gepostet, da war ich aber scheinbar falsch.
Also versuch ich es bei euch nochmal, vielleicht kann mir ja hier jemand helfen:


Ich hab eine GPX Datei wo ich NUR den "ele" Wert auslesen möchte.
Wenn ich das mach, wie hier http://www.devmag.net/webprog/php_xml_expat_1.htm beschrieben wird, bekomme ich jedoch auch Metadata und Titel und noch ein paar andere Sachen mit.

Wie bekomme ich also nur den "ele" Wert?

Hier ein bisschen von der GPX Datei:
PHP:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="MapSource 6.11.6" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">

  <metadata>
    <link href="http://www.garmin.com">
      <text>Garmin International</text>
    </link>
    <time>2007-08-14T13:53:30Z</time>
    <bounds maxlat="47.389548" maxlon="13.760247" minlat="47.326827" minlon="13.675790"/>
  </metadata>

  <trk>
    <name>Untertal</name>
    <extensions>
      <gpxx:TrackExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd">
        <gpxx:DisplayColor>White</gpxx:DisplayColor>
      </gpxx:TrackExtension>
    </extensions>
    <trkseg>
      <trkpt lat="47.388325" lon="13.688128">
        <ele>770.616699</ele>
      </trkpt>

Danke!

Wenn jemand eine andere Idee hat wie ich das mache, ohne Expat, dann nur raus damit :)

ps: hier der Link zum XML-Unterforum: http://www.tutorials.de/forum/xml/334169-xml-gpx-php.html
 
Hier ist dein Problem ziemlich gut und verständlich beschrieben. Vorrausetzung dafür ist natürlich du verwendest xpath.

Gruss
 
Hi,

Du solltest vielleicht mal den Code posten, mit dem Du das versucht hast...



Und? Hast Du mal diese XPath-Klasse ausprobiert?

LG

Hi,

so hier mein code:
PHP:
function startElement($parser, $element_name, $element_attribute) {
				global $ausgabe;
				global $lon;
				global $lat;
				global $ele;
				
			
				
				$attr_lat = $element_attribute['LAT']; // Latitude
				$attr_lon = $element_attribute['LON']; // Longtidude
				$attr_ele = $element_attribute['ELE']; // HÖHE
				
				//Umwandeln in Kleinbuchstaben
				$element_name = strtolower($element_name);
				
				//Überprüfung des Elementnames <trkpt lat="50.284741667" lon="10.098406667">
					if ($element_name=="trkpt") {
						
						$lon.="{$attr_lon}";
						$lat.="{$attr_lat}";
				
					}
					
					// Höhenmeter <ele>237.200000</ele>
					if($element_name=="ele"){
						$ele .= "H: {$attr_ele}";
					}
					
					echo $element_attribute['LAT']."<br>";
				}
				
				
				
				
				
				function endElement($parser, $element_name) {
						global $ausgabe;
						global $lon;
						global $lat;
						global $ele;
						// in Kleinbuchstaben umwandeln
						$element_name = strtolower($element_name);
						// Überprüfung des Names eines Elementes
						if ($element_name=="trkpt") {
								$ausgabe .= "-";
								$lon .= "-";
								$lat .= "-";
								
						}
						
					
				
				}
				
				function cdata($parser, $element_inhalt) {
					global $ausgabe;
					global $lon;
					global $lat;
					global $ele;
					// Der normale Text wird an $ausgabe angehängt
					
					$ausgabe .=$element_inhalt;
					
				}
				
				$xmlFile = file("592.gpx");
				$parser = xml_parser_create();
				xml_set_element_handler($parser, "startElement", "endElement");
				xml_set_character_data_handler($parser, "cdata");
				
				foreach($xmlFile as $elem) {
				
					xml_parse($parser, $elem);
					
				}
				
				xml_parser_free($parser);

				print $ele;


Bei XPath muss ich ja auch mein XML, also das GPX konfigurieren, oder verstehe ich das falsch?
Nur gehts darum, es sollen User der Website Ihr eigenes GPX hochladen können.

Danke schon mal!
 
So, ich hab es geschafft. Ist sicher ein bisschen Querdenkerei, aber es funktioniert, wie ich es brauch ;-)

Das soll es tun:
Eine GPX Datei in Ihre Bestandteile zerlegen und LON, LAT und ELE für Google maps in eine Datenbank spielen.

Falls jemand ein ähnliches Problem hat, ich hab euch die Dateien ran gehängt.

Danke trotzdem!
 

Anhänge

Zurück