Startseite › Foren › Deutsches LiveCode-Forum › Fragen zu XML
Schlagwörter: XML
- Dieses Thema hat 12 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 8 Monaten von gfz.
-
AutorBeiträge
-
-
Januar 13, 2018 um 06:00 Uhr #3594
Hallo Leute
Seit Anfang Dezember bastel ich schon (dank Haukes Buch) mit Livecode rum…
Jetzt hab ich mal eine Frage zu XML…
als Geocacher nutze ich gelegentlich für meine Tourplanungen *.LOC-Files die XML basierend sind und ich mir nun einen LOC-Viewer basteln wollte (Übergabe in ein Datagrid, anzeige auf GoogleMap usw…)Beispielaufbau eines LOC-Files (eingetragene Daten sind Fiktiv):
<?xml version="1.0" encoding="UTF-8"?> <loc version="1.0" src="Groundspeak"> <waypoint> <name id="GCCODELC"><![CDATA[Das is ne Dose by irgendeinCacher1]]></name> <coord lat="49.85765" lon="8.252717"/> <type>Geocache</type> <link text="Cache Details">http://www.geocaching.com/seek/cache_details.aspx?wp=GCCODELC</link> <difficulty>2</difficulty> <terrain>2.5</terrain> <container>2</container> </waypoint> <waypoint> <name id="GCCODEXM"><![CDATA[Isch bin ein Cache by irgendeinCacher2]]></name> <coord lat="79.85765" lon="5.272717"/> <type>Geocache</type> <link text="Cache Details">http://www.geocaching.com/seek/cache_details.aspx?wp=GCCODEXM</link> <difficulty>2</difficulty> <terrain>2.5</terrain> <container>2</container> </waypoint> </loc>
Soweit so gut
Laden des Files klappt ja schon…
Jetzt hab ich versucht nach einer “englischen” Anleitung wie man XML ausliest das ganze auf meine Interessen aufzubauen. Leider bin ich aber hier gescheitert, da diese Anleitung für mich persönlich doch etwas unverständlich war und für einen “Newbie” in LC nicht wirklich nachvollziehbar.Kennt jemand einen verständlichen Artikel oder eine Anleitung, am besten in Deutsch, wie man XML ausliest bzw. damit arbeiten kann?
Nicht Falsch verstehen, ich frage hier nicht nach einem fertigen Script, sondern um eine verständliche Anleitung wie man XML in LC bearbeitet bzw Verarbeitet… Basteln will ich schon selbst.
Vielen Dank schonmal vorab wenn mir jemand einen Tipp geben kann.
-
Januar 14, 2018 um 13:50 Uhr #3615
Hallo Andreas, welchen englischen Artikel hast Du versucht?
LG,
Georg -
Januar 14, 2018 um 15:25 Uhr #3620
Hallo nochmals Andreas,
ich habe diesen Artikel gefunden:
http://lessons.livecode.com/m/4071/l/7011-how-to-read-in-data-from-an-xml-fileSo wie ich das verstehe, müsstest Du nur die Routine “private command processPreferencesTree pTree” an Deine Bedürfnisse anpassen, je nachdem welche Daten Du aus dem Loc-File extrahieren willst.
Eventuell auch die Funktion zum Einlesen der Datei.
LG,
Georg -
Januar 14, 2018 um 17:11 Uhr #3622
Hallo Georg…
Danke für deine Antwort
Bin sogar schon ein Schritt weiter… das LOC-File kann ich auslesen, das Funktioniert auch soweit.
Stand ein wenig auf dem Schlauch und hatte einfach nen schlechten Tag als ich das thema angegangen bin *ggg*Das ganze sieht jetzt so aus:
private command processLOCTree pTree local tnameid, tname, tlat, tlon, tAusgabe local tWPs, tLWPs put revXMLChildNames(pTree, "loc", return, "waypoint", false) into tWPs repeat for each line waypoint in tWPs put revXMLAttribute(pTree, "loc/waypoint/name", "id") into tnameid put revXMLNodeContents(pTree, "loc/waypoint/name") into tname put revXMLAttribute(pTree, "loc/waypoint/coord", "lat") into tlat put revXMLAttribute(pTree, "loc/waypoint/coord", "lon") into tlon put "Name = " & tnameid &": "& tname & return & "Coord = " & tlat &", "& tlon & return after tLWPs put return after tLWPs end repeat put tLWPs after tAusgabe set the text of field "text" to tAusgabe end processLOCTree
Wie man sieht will ich nur die ID (auch GCCODE genannt), der Name des Cache und die Coordinaten aus den einzelnen Waypoints ziehen.
Das klappt auch soweit, auch der Repeat läuft. Hab ein LOC-File bis 25 Waypoints zum testen, die der Repeat auch entsprechend abläuft… nur das er mir hier in jeder repeat-Runde nur den Content des ersten Waypoints des LOCs anzeigt…
Such grad den fehler… find ihn nur grade nicht… :/
-
Januar 14, 2018 um 17:26 Uhr #3624
Hi,
wenn Du in der Schleife mit put nicht in eine Variable sondern in die Message Box schreibst, erhältst Du dann alle Daten oder auch nur den Inhalt des ersten Waypoints?
mfG,
Georg -
Januar 14, 2018 um 17:30 Uhr #3626
Noch was,
was liefert “the number of lines of tWPs” bevor du in die Schleife gehst?
mfG,
Georg -
Januar 14, 2018 um 17:38 Uhr #3628
Schon ausprobiert… auch da immer nur den inhalt des ersten WPs…
Ich denke das ich einen Denkfehler in der Schleife an sich hab, das er immer nur den ersten ausliest -
Januar 14, 2018 um 17:44 Uhr #3630
Derzeit hab ich ein File mit 3 Waypoints im Test (ist übersichtlicher)
the number of lines of tWPs sagt mir auch das er drei drin hat…also nochmal zurück an die Bücher und Schleifen pauken.
selbst schuld wenn man jahrelang nix gemacht hat und jetzt wieder anfangen will… *lach* -
Januar 14, 2018 um 18:05 Uhr #3632
Hi,
mir ist schon was in deiner Schleife aufgefallen.
repeat for each line x in Variable
…
…
end repeat
Du verwendest x nicht im Schleifenrumpf!
mfG,
Georg -
Januar 14, 2018 um 18:11 Uhr #3634
Ich weiß zwar nicht was in tWPs abgespeichert wird, aber du beziehst dich in deiner Schleife weder auf die eingelesene Zeile (waypoint) noch auf tWPs.
Meiner Meinung müsstest Du in “waypoint” nach den gewünschten Inhalten suchen und nicht in pTree.
mfG,
Georg -
Januar 14, 2018 um 18:23 Uhr #3636
tWPs ist die anzahhl der Waypoints die im LOC vorhanden sind
put revXMLChildNames(pTree, "loc", return, "waypoint", false) into tWPs
schreibt dies in die Variable tWPs (tWayPoints – Mehrzahl 😉 )Da hab ich meinen Denkfehler… danke…
Na dann schau ich mal wie ich das rausbekomme…Merci
-
Januar 14, 2018 um 18:39 Uhr #3638
Ha… gelöst…
Danke Gregor für den Denkanstoss
private command processLOCTree pTree local tnameid, tname, tlat, tlon, tAusgabe local tWPs, tLWPs put revXMLChildNames(pTree, "loc", return, "waypoint", true) into tWPs repeat for each line twaypoint in tWPs put revXMLAttribute(pTree, "loc/"&twaypoint&"/name", "id") into tnameid put revXMLNodeContents(pTree, "loc/"&twaypoint&"/name") into tname put revXMLAttribute(pTree, "loc/"&twaypoint&"/coord", "lat") into tlat put revXMLAttribute(pTree, "loc/"&twaypoint&"/coord", "lon") into tlon put "Name = " & tnameid &": "& tname & return & "Coord = " & tlat &", "& tlon & return after tLWPs put return after tLWPs end repeat put tLWPs after tAusgabe set the text of field "text" to tAusgabe end processLOCTree
Es war wirklich der denkfehler das ich die Variable “waypoint” (jetzt twaypoint) nicht abgefragt hatte…
Danke nochmal
-
Januar 14, 2018 um 19:13 Uhr #3640
keine Ursache Andreas. Freut mich, dass ich helfen konnte.
LG,
Georg
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.