Анализ файла XML в кодировке UTF-8

У меня есть XML-файл, содержащий некоторые арабские символы, извлеченные из URL, поэтому мне пришлось кодировать его в UTF-8, чтобы он мог обрабатывать такие символы.

XML-файл:



                
           
        1
            News Test 1
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/news1.jpg
           
           
        2
            كريم
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/news2.jpg
           
           
        3
            News Test 333
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/news3.jpg
            
           
        4
            ربيع
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/cont20.jpg
            
           
        5
            News Test 55555
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/cont21.jpg
                 
           
        6
            News Test 666666
            16/7/2012
        <img>joelle.mobi-mind.com/imgs/cont22.jpg
                          
    
  

Я проанализировал XML, полученный по URL-адресу, как String, как показано ниже:

public String getXmlFromUrl(String url) {

    try {
        return new AsyncTask() {
            @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;
}

Теперь возвращенная строка передается этому методу, чтобы получить документ для последующего использования, как показано ниже:

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;

}

Ошибка произошла с этим сообщением:

09-18 07:51:40.441: E/Error:(1210): Unexpected token (position:TEXT @1:4 in java.io.StringReader@4144c240) 

Таким образом, код падает, где я показал выше со следующей ошибкой

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

Пожалуйста, обратите внимание, что код прекрасно работает с кодировкой ISO.

Ответы на вопрос(2)

Ваш ответ на вопрос