-->

porting to Android: why am I getting “Can't cr

2019-02-18 20:50发布

问题:

I am porting some Java code that worked fine on my desktop to Android. I have the following code segment:

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
// ...
XMLReader p = XMLReaderFactory.createXMLReader();

At the last line I get the following exception:

Can't create default XMLReader; is system property org.xml.sax.driver set?

When I was testing the code on desktop, it was working fine. Why am I getting this exception on Android and how can I fix it? Thx!

回答1:

I just ran into the same issue while porting some code to Android. I found that creating my own factory and parser seems to work.

I'd try replacing this:

XMLReader p = XMLReaderFactory.createXMLReader();

With this:

SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser newSAXParser = saxParserFactory.newSAXParser();
XMLReader p = newSAXParser.getXMLReader();

Hope this helps :)



回答2:

My solution was including the following code in my MainActivity:

System.setProperty("org.xml.sax.driver","org.xmlpull.v1.sax2.Driver");


回答3:

Resolved by following Parsing an XML File Using SAX (The Java™ Tutorials > Java API for XML Processing (JAXP) > Simple API for XML)