Parsing an UTF-8 Encodded XML file

I have an XML File containing some Arabic Characters retrieved from a URL so I had to encode it in UTF-8 so it can handle such characters.XML File:\[code\]<Entry> <lstItems> <item> <id>1</id> <title>News Test 1</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/news1.jpg</img> </item> <item> <id>2</id> <title>????</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/news2.jpg</img> </item> <item> <id>3</id> <title>News Test 333</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/news3.jpg</img> </item> <item> <id>4</id> <title>????</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/cont20.jpg</img> </item> <item> <id>5</id> <title>News Test 55555</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/cont21.jpg</img> </item> <item> <id>6</id> <title>News Test 666666</title> <subtitle>16/7/2012</subtitle> <img>joelle.mobi-mind.com/imgs/cont22.jpg</img> </item> </lstItems> </Entry>\[/code\]I parsed the XML retrieved from a URL it as String as shown below:\[code\]public String getXmlFromUrl(String url) { try { return new AsyncTask<String, Void, String>() { @Override protected String doInBackground(String... params) { //String xml = null; try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet httpPost = new HttpGet(params[0]); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); xml = new String(EntityUtils.toString(httpEntity).getBytes(),"UTF-8"); } catch (Exception e) { e.printStackTrace(); } return xml; } }.execute(url).get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } return xml;}\[/code\]Now the returned String is passed to this method to get a Document for later use as shown below:\[code\]public Document getDomElement(String xml){ Document doc = null; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); StringReader xmlstring=new StringReader(xml); is.setCharacterStream(xmlstring); is.setEncoding("UTF-8"); //Code Stops here ! doc = db.parse(is); } catch (ParserConfigurationException e) { Log.e("Error: ", e.getMessage()); return null; } catch (SAXException e) { Log.e("Error: ", e.getMessage()); return null; } catch (IOException e) { Log.e("Error: ", e.getMessage()); return null; } // return DOM return doc;}\[/code\]an Error ocured with this message:\[code\]09-18 07:51:40.441: E/Error:(1210): Unexpected token (position:TEXT ???@1:4 in java.io.StringReader@4144c240) \[/code\]So the code crashes where I showed above with the following Error\[code\]09-18 07:51:40.451: E/AndroidRuntime(1210): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.university1/com.example.university1.MainActivity}: java.lang.NullPointerException\[/code\]Kindly note that the code works fine with ISO encoding.I would appreciate your help but please be specific in your answers
 
Back
Top