java.net.MalformedURLException: no protocol with javax.xml.stream.XMLStreamException while using JAXB

Bhaskar Mukherjee picture Bhaskar Mukherjee · Jan 31, 2014 · Viewed 8.2k times · Source

I am using JAXB to unmarshal an XML document. While parsing the XML it is throwing a MalformedURLException wrapped with XMLStreamException. What I understand is while creating the XMLStreamReader object itself it is throwing the exception. Any suggestions please?

The code snippet I am using:

    XMLInputFactory xif = XMLInputFactory.newFactory();      
    XMLResolver resolver = new XMLResolver(); //to capture systemID, base URI etc.
    xif.setXMLResolver(resolver);

    //Throws MalformedURLException  while processing the below line
    XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource(fileToProcess));

    JAXBContext jaxbContext = JAXBContext.newInstance(MyPackage.MyClassName.class);

Here is the exception trace:

     class javax.xml.stream.XMLStreamException
     javax.xml.stream.XMLStreamException: java.net.MalformedURLException: no protocol:       [XML_FILEPATH/XML_FILE_NAME]

fileToProcess is a string that contains absolute path, like /home/project/input/myproject.xml

Run time JDK is 1.7. Any signature/protocol I am missing?

Thanks, Bhaskar

Answer

Naren picture Naren · Jan 31, 2014

Try this:

XMLStreamReader streamReader = factory.createXMLStreamReader(
new FileReader("data\\test.xml"));