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.