XML lesen, wenn DTD in anderem Verzeichnis

Status
Nicht offen für weitere Antworten.

Octavian

Mitglied
In meinem Programm kann man Daten in eine XML-Datei speichern und laden.
Laden soll man prinzipiell Daten aus einem beliebigen Verzeichnis können, die DTD für die XML-Datei liegt jedoch im Programmverzeichnis von meiner Anwendung.
Da man die gespeicherten Dateien aber auch verschieben können soll, kann ich in der XML-Datei unter DOCTYPE generell nicht das "richtige" Verzeichnis für die DTD angeben.

Wie kriege ich das jetzt hin, dass der mit beim laden der XML-Datei die DTD automatisch in meinem Programmverzeichnis sucht, und nicht dort, wo die geladene XML-Datei liegt...

Ich benutz grad folgenden Programmcode:

Code:
DOMParser parser = new DOMParser();
parser.parse(file.getAbsolutePath());
doc = parser.getDocument();

"file" wird dabei von einem JFileChooser erzeugt.
Wenn die .dtd-Datei jetzt nicht im selben Verzeichnis ist wie die ausgewählte XML-Datei kommt folgende Exeption:
"C:\...\automaton.dtd (Das System kann die angegebene Datei nicht finden)"

Den Pfad für die dtd-Datei müsste man doch sicher irgendwie auf das Arbeitsverzeichnis des Programms umbiegen können, oder?? Ich finde nur leider net wie...

Schon mal Danke für alle Hilfe :)

MfG,
Jan.
 

spunti

Mitglied
Ich habe leider dasselbe Problem und bisher auch keine Lösung gefunden. Ich kann meine XML-Dateien mit DOM nicht parsen, weil die DTD nicht da ist, was mich aber eigentlich gar nicht interessiert. Die Validierung hab ich schon explizit ausgeschalten.

- Hier im Forum gibt's den Tipp, Features an der DocumentBuilderFactory zu setzen. Das scheint aber kein Standard-DOM zu sein, jedenfalls gibts die Methode setFeatures bei mir mit Java 1.4.2 nicht.
- An anderer Stelle im Forum ist jemand aus diesem Grund zum SAX-Parser gewechselt, dort kann man die Beachtung der DTD wohl abstellen. (Leider kann ich SAX aber nicht verwenden, weil ich anscheinend mit Standard-SAX von Java 1.4.2 nicht an XML-Kommentare herankomme.)
- Ein anderer hier im Forum legt die DTD einfach seinem Programm bei und kopiert die an die richtige Stelle, um sie nach dem Parsen wieder zu löschen. Ganz schön freakig, aber im Moment scheint mir das auch die einzige Lösung.

Geht das wirklich nicht abzuschalten oder umzubiegen auf einen anderen Pfad?

danke und grüße
spunti
 

spunti

Mitglied
Ich hab jetzt eine Möglichkeite gefunden, dem DOM-Parser auf die DTD im Verzeichnis meiner Klasse zu verweisen. Das ganze scheint zu funktionieren bei DOCTYPE SYSTEM "<filename>" und bei PUBLIC "<irgendwas>" "<URL>", jdeoch nicht bei SYSTEM "file:<filename>".
(Bei letzterem sucht er immer noch den Pfad wie in der XML-Datei angegeben.)

Code:
DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			factory.setValidating(false);

			DocumentBuilder builder = factory.newDocumentBuilder();
			Document document = null;

			InputSource lala = new InputSource(inputStreamOfExistingFile);
			// use DTD from this class' folder
			URL dtdURL = this.getClass().getResource("jdo.dtd");
			if (dtdURL != null)
				lala.setSystemId(dtdURL.toString());

			document = builder.parse(lala);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Klassen mit generischen Attributen mit Jackson lesen XML & JSON 4
H XMLConfiguration(1.10)/getString : Wert "E" aus <version type="Auto">E</version>n lesen XML & JSON 15
C einfach XML lesen XML & JSON 4
JBoby Yaml File lesen und in Objekte umwandel (SnakeYAML / YamlBeans) XML & JSON 0
E Einzelne Tags der context.xml lesen XML & JSON 1
W Json von URL Lesen (mit Gson Library) XML & JSON 3
W Json von URL Lesen XML & JSON 2
G Jsoup Daten lesen XML & JSON 0
F KindElemente lesen und begrenzen XML & JSON 0
P Bestimmte XML-Inhalte in String lesen XML & JSON 2
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
P Komfortabel XML Dokumente schreiben und lesen XML & JSON 6
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
S XML lesen und schreiben XML & JSON 2
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
O PDF mit Pdfbox lesen XML & JSON 3
S XMLStreamReader, letzten eintrag eines xml lesen? XML & JSON 5
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
Mike90 Daten aus DB in ExcelTabelle lesen + bearbeiten + formatieren XML & JSON 2
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
Fadi .classpath(XML) mit Java lesen XML & JSON 2
J Problem beim XML-Lesen XML & JSON 2
J Logdaten als XML speichern und lesen XML & JSON 2
J XML lesen schreiben XML & JSON 7
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
T Xml lesen und in .txt zeilenweise schreiben XML & JSON 4
L Einfaches XML Lesen und Schreiben XML & JSON 4
C SAX Probleme beim lesen XML & JSON 4
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
R key aus xml lesen mittels jdom XML & JSON 5
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
R Daten aus xml lesen und in Strings speichern XML & JSON 4
R xml mit Jdom lesen und als Jtree anzeigen. XML & JSON 9
J Jdom Elemente lesen XML & JSON 5
thE_29 Vor dem ersten Posten bitte lesen! XML & JSON 0
W xslt zum Rausfiltern von Feldern in XML wenn variable gleich false XML & JSON 7
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
N Summe bilden wenn bestimmte Felder inhaltlich übereinstimmen XML & JSON 15
N Node unter anderem Namen kopieren XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben