speedi Geschrieben 12. Juli 2011 Teilen Geschrieben 12. Juli 2011 Hi Leute, ich habe die Aufgabe einen XML-Reader zu schreiben um Daten in einem bestimmten Format einzulesen. Ich habe aus einer XML-Schema-Definition mit JAXB die Klassenstruktur erzeugt und möchte nun die Daten einlesen. Das Problem: In der XML die ich einlesen möchte gibt es eine Zeile: <!DOCTYPE READER SYSTEM "1.0.1"> Nun bekomme ich eine Fehlermeldung dass die Datei "1.0.1" (DTD-Datei) im Ordner in dem die XML selbst auch liegt nicht vorhanden ist. Ich habe die Datei. Allerdings kann ich sie ja schlecht immer erst in den Ordner kopieren aus dem ich die XML laden will. Weiß jemand wie man dem JAXB sagt, dass er die Doctype-Definition von woanders laden soll? Nochmal die Fehlermeldung: javax.xml.bind.UnmarshalException - with linked exception: [java.io.FileNotFoundException: C:\Users\Username\workspace\XMLConnector\testfiles\1.0.1 (Das System kann die angegebene Datei nicht finden)] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:202) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169) at Test.main(Test.java:14) Caused by: java.io.FileNotFoundException: C:\Users\Username\workspace\XMLConnector\testfiles\1.1.2 (Das System kann die angegebene Datei nicht finden) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:120) at java.io.FileInputStream.<init>(FileInputStream.java:79) at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70) at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200) ... 6 more Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
i � unicode Geschrieben 12. Juli 2011 Teilen Geschrieben 12. Juli 2011 Und wenn du es mit folgendem probierst: <!DOCTYPE READER SYSTEM "1.0.1[COLOR="red"].dtd[/COLOR]"> ? Ich glaube, dass er eine Datei sucht, die 1.0 heisst, und die Endung .1 hat Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 12. Juli 2011 Autor Teilen Geschrieben 12. Juli 2011 Hallo Unicode. Nein, das hilft mir nicht. Die Dateien die ich einlesen muss zu verändern wäre keine gute Lösung. Es handelt sich um einen Standard den ich eben so implementieren muss wie er definiert ist. An der Dateiendung liegts nicht. Ich habe die Datei (ursprünglich "doctype_1.0.1.dtd") bereits umbenannt zu "1.0.1". Damit funktioniert es auch - sofern die Datei im gleichen Ordner liegt wie die XML-Dateien. Aber das ist eben nicht der Fall. Natürlich könnte man jetzt die Datei dann einfach automatisiert vor dem unmarshalling in den Ordner kopieren - würde funktionieren - aber eine schöne Lösung ist das wirklich nicht. Es muss doch wohl möglich sein, den Unmarshaller irgendwie zu sagen wo er die Doctype-Definition herziehen soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.