lezen in gpx file top op een bepaalde plaats
Pagina: « vorige 1 2 3 4 volgende »
1. Je hebt een XML file (genaamd .gpx maar dat is niet relevant). XML is een standaard voor gegevens opslag en verwerking.
2. Hiervoor zijn dus veel hulpmiddelen beschikbaar en hoef je niet met fread en pattern-matching aan de slag.
3. Je kunt dus met kant-en-klare programma-modules cq libraries werken om de XML file snel de gewenste attributen uit te lezen.
4. Vervolgens insert je per regel in je database.
Even wat tijd steken in de werking van aangeboden kant-en-klare programma-modules en je bespaart jezelf veel tijd en het risico om foutgevoelige php stukken te bouwen.
Als het programma geen webfunctie heeft dan doe ik dit soort dingen altijd met python in plaats van php.
Voor Python zijn ook veel duidelijke en makkelijke libraries beschikbaar.
Gewijzigd op 18/02/2023 16:34:33 door John D
En hoe weet je dat dit voor u is ?
PHP kan prima met grote XML-feeds werken.
Toevoeging op 18/02/2023 16:46:35:
kan ik dat opsturen via mail ?
Als er bij wijze van spreke 200 items in staan, kan je dit net zo goed inkorten tot 2 items.
Het staat er op als GPX
Ja....
het begint bij <wpt en de cache eindigt bij </wpt>
<wpt lat="50.558333" lon="4.101667"> enkel 50.558333 en 4.101667
<name>GCA02MB</name> enkel GCA02MB
<desc>26. Il y a de l'illusion dans l'air by Jc et Fr (2/2)</desc> enkel 26. Il y a de l'illusion dans l'air by Jc et Fr (2/2)
<type>Geocache|Unknown Cache</type>enkel type (unknown cache
<groundspeak:container>Micro</groundspeak:container> enkel micro
<groundspeak:difficulty>2</groundspeak:difficulty> enkel 2
<groundspeak:terrain>2</groundspeak:terrain>enkel 2
<groundspeak:country>Belgium</groundspeak:country> enkel Belgium
<groundspeak:state>Hainaut</groundspeak:state>enkel Hainaut
Bij voorkeur beknopt met een paar items.
Gewijzigd op 18/02/2023 17:34:40 door - Ariën -
Parseerfout: syntaxisfout, onverwacht token ":", verwacht "," of ";" in C:\xampp\htdocs\geo_db_gpx_gsak\test.php op regel 10
dit staat in de GPX :
<groundspeak:type>Unknown Cache</groundspeak:type>
<groundspeak:container>Micro</groundspeak:container>
<groundspeak:difficulty>2</groundspeak:difficulty>
<groundspeak:terrain>2</groundspeak:terrain>
<groundspeak:country>Belgium</groundspeak:country>
<groundspeak:state>Hainaut</groundspeak:state>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
header ('Content-type: text/html; charset=utf8mb4');
$xml=simplexml_load_file("c:/geo_db/test.gpx") or die("Error: Cannot create object");
echo $xml->wpt[0]->lat . "<br>";
echo $xml->wpt[0]->lon . "<br>";
echo $xml->wpt[0]->name . "<br>";
echo $xml->wpt[0]->desc . "<br>";
echo $xml->wpt[0]->type . "<br>";
echo $xml->wpt[0]->groundspeak:container . "<br>";
echo $xml->wpt[0]->groundspeak:difficulty . "<br>";
echo $xml->wpt[0]->groundspeak:terrain . "<br>";
echo $xml->wpt[0]->groundspeak:country . "<br>";
echo $xml->wpt[0]->groundspeak:state . "<br>";
?>
header ('Content-type: text/html; charset=utf8mb4');
$xml=simplexml_load_file("c:/geo_db/test.gpx") or die("Error: Cannot create object");
echo $xml->wpt[0]->lat . "<br>";
echo $xml->wpt[0]->lon . "<br>";
echo $xml->wpt[0]->name . "<br>";
echo $xml->wpt[0]->desc . "<br>";
echo $xml->wpt[0]->type . "<br>";
echo $xml->wpt[0]->groundspeak:container . "<br>";
echo $xml->wpt[0]->groundspeak:difficulty . "<br>";
echo $xml->wpt[0]->groundspeak:terrain . "<br>";
echo $xml->wpt[0]->groundspeak:country . "<br>";
echo $xml->wpt[0]->groundspeak:state . "<br>";
?>
Parseerfout: syntaxisfout, onverwacht token ":", verwacht "," of ";" in C:\xampp\htdocs\geo_db_gpx_gsak\test.php op regel 10
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
header ('Content-type: text/html; charset=utf8mb4');
$xml=simplexml_load_file("c:/geo_db/test.gpx") or die("Error: Cannot create object");
var_dump($xml->wpt[0]);
echo $xml->wpt[0]['lat'] . "<br>";
echo $xml->wpt[0]['lon'] . "<br>";
echo $xml->wpt[0]->name . "<br>";
echo $xml->wpt[0]->desc . "<br>";
echo $xml->wpt[0]->type . "<br>";
echo $xml->wpt[0]->groundspeak:container . "<br>";
echo $xml->wpt[0]->groundspeak:difficulty . "<br>";
echo $xml->wpt[0]->groundspeak:terrain . "<br>";
echo $xml->wpt[0]->groundspeak:country . "<br>";
echo $xml->wpt[0]->groundspeak:state . "<br>";
?>
header ('Content-type: text/html; charset=utf8mb4');
$xml=simplexml_load_file("c:/geo_db/test.gpx") or die("Error: Cannot create object");
var_dump($xml->wpt[0]);
echo $xml->wpt[0]['lat'] . "<br>";
echo $xml->wpt[0]['lon'] . "<br>";
echo $xml->wpt[0]->name . "<br>";
echo $xml->wpt[0]->desc . "<br>";
echo $xml->wpt[0]->type . "<br>";
echo $xml->wpt[0]->groundspeak:container . "<br>";
echo $xml->wpt[0]->groundspeak:difficulty . "<br>";
echo $xml->wpt[0]->groundspeak:terrain . "<br>";
echo $xml->wpt[0]->groundspeak:country . "<br>";
echo $xml->wpt[0]->groundspeak:state . "<br>";
?>
Toevoeging op 18/02/2023 23:48:27:
foutmelding is op echo $xml->wpt[0]->groundspeak:container . "<br>";
omdat er een : tussen groundspeak en container staat.
Ik gaf toch echt aan dat je alleen die 3 regels moet plaatsen. De rest moet je even weghalen.
Alleen dit en verder niks.
dan krijg ik dit :
object ( SimpleXMLElement )[ 4 ]
public '@attributes' =>
array (size=2)
'lat' => string '50.558333' (length=9)
' lon' => string '4.101667' (lengte=8)
public 'time' => string '2022-12-24T08:00:00Z' (length=20)
public 'name' => string 'GCA02MB' (length=7 )
public 'desc' => tekenreeks '26. Er hangt illusie in de lucht door Jc et Fr (2/2)' (lengte=53)
public 'url' => string 'http://coord.info/GCA02MB' (lengte=25)
public 'urlname' => tekenreeks '26. Er hangt illusie in de lucht door Jc et Fr' (lengte=47)
public 'sym' => string 'Geocache' (lengte=8)
public 'type' => string 'Geocache|Unknown Cache' ( lengte=22)
Grote kans dat het fout gaat hoor, maar je kunt het eens proberen.
Warning: simplexml_load_file(): c:/geo_db/test.gpx:21: namespace error : Failed to parse QName 'xmlns:groundspeak:' in C:\xampp\htdocs\geo_db_gpx_gsak\test.php on line 3
Gewoon een foutmelding. Niet gelijk zo paniekerig reageren.
Ik weet ook niet hoe dit werkt. Ik probeer je gewoon te helpen.
Plak hier eens de eerste 25 regels van dat gpx bestand.
$string= file_get_content("bla.xml") waarna ik $xml=simplexml_load_string($string) gebruik.
Als je nu een beknopte sample op Pastebin plaatst met een paar geocache items. Met een half deel kunnen we niet veel als we niet weten welke tags (nodes) er gebruikt worden.
Gewijzigd op 19/02/2023 08:59:55 door - Ariën -