[Solved] org.xml.sax.SAXParseException: Content is not allowed in prolog

When loading xml string to scala.xml.Elem, the method throws error saying org.xml.sax.SAXParseException: Content is not allowed in prolog. It looks like BOM (byte order mark) issue because xml to be parsed contains BOM value <U+FEFF> at the head of xml. Generally what is a canonical way to handle this (though I can simply remove it)?

[info]   org.xml.sax.SAXParseException: Content is not allowed in prolog.
[info]   at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
[info]   at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:994)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
[info]   at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
[info]   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
[info]   at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
[info]   ...

see https://github.com/scala/scala-xml/issues/95

Thanks for the information.

Although it’s not scala xml related, but anyway BOMInputStream should do the trick.