Reputation: 121
I have an XML document built with
org.xmlpull.v1.XmlSerializer
This document contains following XML prolog
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
When I try to parse this document using
import org.xmlpull.v1.XmlPullParser;
with following configuration code
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(theInputStream, "utf-8");
I get undecoded utf-8 strings when I call
String text = pullParser.getText();
So it seems that XmlPullParser in Android (I use 1.5) doesn't support utf-8. Did I miss something?
Thank you in advance.
Upvotes: 5
Views: 4776
Reputation: 19664
This question is old but I recently ran into the same issue using XMLPullParser. In my case, I was parsing a stream of UTF-8 encoded XML from an OkHttp ResponseBody. It was necessary for me to specify the input encoding charset for this to work. In case someone else lands here:
override fun convert(response: ResponseBody): ArchNewsFeed? {
val encoding = Charsets.UTF_8.name()
val factory = XmlPullParserFactory.newInstance()
factory.isNamespaceAware = true;
val parser = factory.newPullParser()
parser.setInput(response.byteStream(), encoding)
...
}
Upvotes: 1
Reputation: 2835
Not sure if it matter but can you try two things
UTF-8
instead of lower caseAnd
pullParser.setInput(theInputStream);
and seeing if the pullparser
can determine the encoding on it's own.Upvotes: 2