• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

XML/GPX Parser

Romanese

Geocacher
Hallo zusammen,

beim GPX Export gibt es nach wie vor das Problem, dass andere Programme oder z.B. mein Oregon die GPX Datei nicht lesen kann. Ich habe mir die GPX Dateien genauer angeschaut und bei manchen Caches tauchen Sonderzeichen auf wie z.B.: AŐȌᴈ瞿. Die selben Sonderzeichen sind schon in der XML Datei und kommen von GC.com.

Meine Frage: Kann jemand im Cachewolf einen XML Parser einbauen, damit man solche Fehler finden und vielleicht gleich beseitigen kann. Dann wuerde auch der GPX Export laufen.

Vielen Dank und viele Gruesse von der Insel.
 

MiK

Geoguru
Das Problem ist: Das sind keine Fehler. GC liefert die Seite in Unicode aus und das sind gültige Unicode-Zeichen. Ob diese im XML an dieser Stelle escaped werden müssten, weiß ich nicht.
 
OP
Romanese

Romanese

Geocacher
Ich kann mir nicht vorstellen das diese Sonderzeichen vom Owner gewollt sind.

http://www.geocaching.com/seek/cache_details.aspx?wp=GC16PPH
 

greiol

Geoguru
sobald jemand einen algorithmus für "das ist falsch" im gegensatz zu "ich könnte mir vorstellen, dass das falsch sein könnte" hat, kann man den vermutlich implementieren.
 

MiK

Geoguru
Romanese schrieb:
Ich kann mir nicht vorstellen das diese Sonderzeichen vom Owner gewollt sind.

http://www.geocaching.com/seek/cache_details.aspx?wp=GC16PPH
Natürlich sind die meist nicht gewollt. Die erzeugt irgendwie GC. Was das genau soll oder ob das ein Bug ist, weiß ich nicht.
 
OP
Romanese

Romanese

Geocacher
Was ich bisher immer gesehen habe sieht so aus:

<span id="LongDescription">
bla bla bla
AġČᴈ瞿</span>

Vielleicht hilft das ja die Sache einzugrenzen.
 

MiK

Geoguru
Ich glaube, die richtige Fragestellung ist nicht "Wie filtere ich diese Zeichen aus?", sondern "Wie kodiere ich sie richtig in XML/GPX?".
Und wenn sie schon richtig kodiert sind: "Wie könnte ich sie anders kodieren, so dass weniger ausgereifte Programme damit zurecht kommen?"
 
OP
Romanese

Romanese

Geocacher
MiK schrieb:
Und wenn sie schon richtig kodiert sind: "Wie könnte ich sie anders kodieren, so dass weniger ausgereifte Programme damit zurecht kommen?"

Das hat nichts mit weniger ausgereiften Programmen zu tun, sondern das die "Sonderzeichen" nicht dem XML Format entsprechen. So sehe ich das, aber ich kenne mich nicht gut mit XML aus.

Es gibt XML parser in Java:

http://java-source.net/open-source/xml-parsers

Hilft das weiter?
 

MiK

Geoguru
Solange keiner mit Sicherheit sagen kann, wie man Unicode-Text in XML speichert, ergibt die weitere Diskussion keinen Sinn.
 

MiK

Geoguru
MiK schrieb:
Solange keiner mit Sicherheit sagen kann, wie man Unicode-Text in XML speichert, ergibt die weitere Diskussion keinen Sinn.
Da am Anfang des GPX steht encoding="utf-8", sehe ich keinen Grund, warum man im Content nicht einfach entsprechende Unicode-Zeichen verwenden dürfen sollte.
 

greiol

Geoguru
MiK schrieb:
Solange keiner mit Sicherheit sagen kann, wie man Unicode-Text in XML speichert, ergibt die weitere Diskussion keinen Sinn.
korrekt gespeichert sind sie, wenn ihr speicherformat zu dem im header deklarierten charset passen

Beispiel:
Code:
<?xml version="1.0" encoding="UTF-8"?>

im moment behaupten wir bei den gpx exporten utf-8 zu schreiben. die frage wäre ob das so auch stimmt. und die nächste spannende frage ist, ob der, der die daten liest mit dem charset überhaupt etwas anfangen kann. und da habe ich bei den garmin geräten ab und an doch leichte zweifel.

kann mal ein colorado / oregon besitzer nachsehen als was die files auf dem gerät in garmin/text kodiert sind?

vermutlich würden die geräte die beschreibungen überleben, wenn diese zeichen komplett als kodiert wären. mag das jemand implementieren?

ich trau mich gar nicht zu erwähnen, das mit 30$ im jahr sich das ganze theater erledigt hat
 

TweetyHH

Geomaster
Ja, diese XML Parser sind meiner Meinung nach häufig schöner als der Weg, der im Cachewolf gegangen worden ist. Allerdings sind es, wie du schon sagst, XML-Parser für Java. Der CacheWolf basiert aber auf EWE, was leider kein vollständiges Java ist. Daher basiert der GPX-Importer soweit ich das sehe auf einer eigenen EWE Parser, der SAX ähnlich ist. Allerdings sehe ich keine besondere Behandlung des Encodings (oder täusche ich mich?).

Dieses nicht Java-Konform sein, war für mich der Grund einen Forks des CacheWolfs für den Desktop zu beginnen. Momentan bin ich neben einer Neuentwicklung eines Mail-Abhole und -Parse Features mit UncleOwen allerdings eher erstmal mit Refactoring von Basis-Diensten/Klassen beschäftigt. So ein Parser neu zu schreiben ist doch etwas Arbeit (vorallem langweilige Fleißarbeit ;-) ). Daher wollte ich diese erst einmal weitgehend unverändert lassen um etwa Verbesserungen aus dem CacheWolf übernehmen zu können. Wenn du allerdings Lust hättest den Parser oder Exporter mit "richtigem" Java neu zu schreiben kannst du dich gerne melden (ich denke da lässt sich das Encoding dann leichter welchseln).

P.S. Zu finden ist das Projekt CacheHound bisher unter http://code.google.com/p/cachehound/
 
OP
Romanese

Romanese

Geocacher
greiol schrieb:
es geht imho um den gpx parser der garmin geräte und nicht um den von cachewolf

Man sollte das Problem so nah wie möglich an der Wurzel packen. GC.com ändern geht nicht. Deshalb war meine Idee einen Parser für den Cachewolf zu erstellen und damit gleichzeitig das Problem beim GPX Export zu lösen. Es ist nicht nur Garmin, sondern GSAK, etc. die Probleme mit den Sonderzeichen haben.
 

huzzel

Geowizard
greiol schrieb:
kann mal ein colorado / oregon besitzer nachsehen als was die files auf dem gerät in garmin/text kodiert sind?
Ich weiß nicht, ob das hier hilft, aber bei POIs, in denen vorkommt, zerlegt die gesamte POI-XML, zumindest meckert der POILoader.
 

greiol

Geoguru
Romanese schrieb:
Deshalb war meine Idee einen Parser für den Cachewolf zu erstellen und damit gleichzeitig das Problem beim GPX Export zu lösen.
hast du das problem mit per pocket query eingelesenen caches? dann sollten wir uns den gpx parser von cachewolf tatsächlich ansehen. hast du das problem mit gespiderten caches? dann brauchen wir uns den gpx parser von cachewolf nicht anzusehen.

bisher kenne ich diese art fehlermeldungen nur von spider benutzern.
 

MiK

Geoguru
Es geht hier nicht um "Sonderzeichen", sondern um teilweise ganz normale Unicode-Schriftzeichen. Die einzige Möglichkeit wäre, diese optional komplett herauszulöschen. Das Ganze hat aber mit XML und dem Parsen des selben kaum etwas zu tun.
 

greiol

Geoguru
danke. jetzt ist die frage wie wir herausfinden was er nicht vertägt obwohl es utf-8 ist.

wir könnten natürlich 1000e einzelne gpx files mit allen möglichen zeichen erzeugen, aber ich bin mir nicht sicher ob das jemand für uns testen möchte.
 

Kalli

Geowizard
Ich habe mir jetzt mal das GPX sowohl von der Cache-Seite als auch von der PQ angeschaut. In dem GPX von der Cacheseite sehe ich überhaupt keinen Müll, bei der PQ ist aus dem Müll CRLF CRLF (also 0x0D 0x0A 0x0d 0x0A) geworden. Das Problem tritt also bei Caches auf, die gespidert und in XML abgespeichert wurden, hat also mit dem XML-Parser, wie vermutet, erst mal wenig zu tun.

Was einen wieder zu der Frage bringt: Wie erkenne ich Müll um ihn beim Speichern entsorgen zu können? Aus Müll richtig kodierten Müll zu machen, macht irgendwie keinen Sinn.
 
Oben