JAXBContext / UnmarshalException / Content is not allowed in prolog / encoding="iso-8859-15"

IDontKnow

Mitglied
Hallo ihr lieben,

ich arbeite heute zum ersten mal mit dem Unmarshaller und leider habe ich ein Problem, das ich nicht richtig deuten kann. Ich habe eine XML die wie folgt beginnt:

Code:
<?xml version="1.0" encoding="iso-8859-15" standalone="yes"?>
<document id="Test.pdf">
     <page id="Page-01">

und mein Code zum auslesen:

Java:
        List<Path> filesInFolder;
        try {
            filesInFolder = Files.walk(Paths.get("-FOLDER-"))
                    .filter(Files::isRegularFile)
                    .collect(Collectors.toList());
           
            JAXBContext jaxbContext = JAXBContext.newInstance(XmlBlockDocument.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
           
           
            for (Path onePath : filesInFolder) {
                XmlBlockDocument xmlBlock = (XmlBlockDocument) jaxbUnmarshaller.unmarshal(new File(onePath.toString()));
//                XmlBlockDocument xmlBlock = (XmlBlockDocument) jaxbUnmarshaller.unmarshal(new BufferedReader(new InputStreamReader(new FileInputStream(onePath.toString()), "ISO-8859-15")));
                data.add(xmlBlock);
                System.out.println("verarbeitet");
            }
            System.out.println("fertig");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JAXBException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Wenn ich dies durchlaufen lasse, bekomm ich folgende Fehlermeldung:
Code:
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; systemId: file:-File-; lineNumber: 2; columnNumber: 1; Content is not allowed in prolog.]
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:563)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:249)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:189)
    at application.xmlDataTests.XMLLoader.<init>(XMLLoader.java:36)
    at application.xmlDataTests.XMLLoader.main(XMLLoader.java:55)
Caused by: org.xml.sax.SAXParseException; systemId: file:-File-; lineNumber: 2; columnNumber: 1; Content is not allowed in prolog.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
    ... 7 more

Auch die Variante mit dem InputStreamReader funktioniert leider nicht.

Komisch ist aber, dass es durchläuft, wenn ich den
encoding="iso-8859-15"
aus der XML lösche...

Hat jemand eine Ahnung an was das liegt?!
 

thecain

Top Contributor
Entweder ist das File nicht wirklich iso-8859-15 encoded, oder jaxb unterstützt das nicht. Kann ich so aus dem Stehgreif nicht fix sagen.
 

Neue Themen


Oben