我有一個XML文件,其中包含一些從URL中檢索到的阿拉伯字符,所以我必須使用UTF-8對其進行編碼,以便它可以處理這些字符。解析UTF-8編碼的XML文件
XML文件:
<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>
我解析從URL作爲字符串檢索XML,如下圖所示:
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;
}
現在返回的字符串傳遞給此方法來獲取供日後使用的文件如下圖所示:
此消息ocured錯誤:
09-18 07:51:40.441: E/Error:(1210): Unexpected token (position:TEXT @1:4 in [email protected])
因此,代碼崩潰,我有以下錯誤
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編碼。
Upvoted僅僅因爲有兩個沒有評論的評論(沒有任何明顯的理由,這個問題是合理的)。 – bortzmeyer
我也這麼做了。 – Neta