Discussion:
Validierung GPX-Datei mit Xerces/SAX
(zu alt für eine Antwort)
WolfgangR
2019-04-22 10:09:49 UTC
Permalink
--
Wolfgang R.
WolfgangR
2019-04-22 10:17:52 UTC
Permalink
Hi Alle,
Beim Parsen (mit Validierung) einer gpx-Datei bekomme ich folgende
Fehlermeldung:

[Error] Current_2019.03.30.gpx:2:5: Document is invalid: no grammar found.
[Error] Current_2019.03.30.gpx:2:5: Document root element "gpx", must
match DOCTYPE root "null".

Der Anfang der gpx-Datei sieht so aus:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1"
creator="eTrex 30" 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>2019-03-30T09:28:09Z</time>
</metadata>
<trk>
...
</trk>

Umgebung:
Debian Testing
Openjdk 11

Der entsprechende Code lautet:

try
{
Writer out = new OutputStreamWriter( System.out );
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware( true );
SAXParser saxparser = factory.newSAXParser();
ContentHandler handler = new GarminGpxHandler( out );

XMLReader reader = saxparser.getXMLReader();
reader.setContentHandler( handler );
reader.setFeature("http://xml.org/sax/features/validation", true);
// Parse
InputSource inputSource = new InputSource( inputfile );
reader.parse(inputSource);
out.flush();
}
catch( IOException ioe ) {...}
catch( ParserConfigurationException e ) {...}
catch( SAXException e ) {...}

Meine Probleme / Fragen:

(1) Da der Garmin etrex30 einige unbenutzte und unbenutzbare
xmlns-Angaben in die Datei einfügt, musste ich sie manuell bearbeiten.
Vorher verweigerte Xerces die Arbeit.
Habe ich dabei etwas falsch gemacht?

(2) Um das Root-Element richtig zu verdauen, muss ich wohl noch eine
Änderung im Java-Code vornehmen.
Ich weiß aber nicht, wo ich eine Anleitung oder Dokumentation zur
Verarbeitung von Dokumenten finde,
deren Root-Element nicht "<xml ..." lautet.


Wolfgang R.

Lesen Sie weiter auf narkive:
Loading...