IO Exception beim einlesen von XML


melmager

Erfahrenes Mitglied
#1
Ich nutze für XML den XOM und bekomme ein IO Fehler beim Build prozess.

Grund ist diese Zeile im XML:
Code:
<!DOCTYPE score-partwise PUBLIC "-/Recordare//DTD MusixXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partweise.dtd"
da wird eine UnknownHostException : www.musicxml.org - geworfen.

Ursache ist also klar :)

Nur wie handle ich das Programmtechnisch ?

folgendes Codefragment habe ich gefunden:
Code:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);

SAXParser parser = factory.newSAXParser();

XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());

Builder builder = new Builder(reader);
wenn ich das richtig verstehe stelle ich dann den Check vom XML File aus. und ich gehe davon aus das dann beim erneuten Versuch ich die XML in den Speicher bekomme.

und versuche dann auch das File mit der Richtigenadresse neu zu erstellen

oder ich setze gleich zu anfang den SAX so das er zum Validieren locale Files nutzt ...

Code:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SchemaFactory schemaFactory =
SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
factory.setSchema(schemaFactory.newSchema(
new Source[] {new StreamSource("contacts.xsd")}));

SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());

Builder builder = new Builder(reader);
Was ist da sinnvoller ?
versuch - Irrtum - berichtigung
oder
immer nutzung von localen Validierungs Daten ?

Wenn Berichtigen der Ursprungsdatei angesagt ist muss ich mich noch etwas mehr einlesen wie man sowas am besten macht
 
Zuletzt bearbeitet:

melmager

Erfahrenes Mitglied
#2
Also auch wenn man die factory.setValidating auf false setzt, liest der SAX trotzdem die Zeile mit DOCTYPE ein
es kommt nach wie vor zum Fehler
Und ich habe im WEB noch keine Möglichkeit gefunden mit XML Mitteln die Zeile mit DOCTYPE zu ändern.

Ich werde nun eine Prefetch Classe erstellen die mit Zeilenweise Datei einlesen arbeitet und ein Check macht
und dann entweder eine modififierte Version speichert oder ich arbeite gleich mit einem Stream den ich on the Fly entsperechend der Anforderung ändere.
 
Zuletzt bearbeitet:

Neue Beiträge