我正在尝试在Android项目中阅读CNN的RSS源。到目前为止,一切都是正确的。我成功地建立了连接并将整个XML文件检索为一个字符串。然后我尝试创建一个JSON对象并解析它。然而,它的某些部分无法被阅读。我试图阅读的XML是这个
视图源:http://rss.cnn.com/rss/edition_world.rss
为了简化并使一切更加清晰,我附上了在JSON对象编辑器中查看的RSS提要的图片:
http://tinypic.com/view.php?pic=2iiaezb&s=8#.U7ax0vmGFmw
所以代码是这样的,
//It successfully converts the text to JSON
JSONObject jObj = new JSONObject(responseText);
String respTime = jObj.getString("responseTime");
//It successfully prints the responseTime
System.out.println("Response time is: " + respTime);
JSONObject respHeader = jObj.getJSONObject("responseHeaders");
String date = respHeader.getString("date");
//It successfully prints the date as well
System.out.println("Date is: "+ date);
//However it says no value for rss found
JSONObject rssObj = jObj.getJSONObject("rss");
JSONObject channelObj = rssObj.getJSONObject("channel");
JSONArray itemArr = channelObj.getJSONArray("item");
" responseTime"," responseHeaders"和" rss"从我引用的图像中可以看出,XML文件的层次结构都是等价的。因此,虽然我能够阅读" responseTime"和#34; responseHeaders",为什么没有找到" rss"的价值,因此我无法联系到它的任何子项目?
答案 0 :(得分:1)
我找到了答案。实际的JSON对象字符串,即responseText,与XML文件中显示的不同。这是不同的东西,我需要时间来实现它。我无法从Eclipse的logcat中复制它,因为它具有有限的缓冲区,所以我必须通过写入文本文件来研究它。然后我可以正确地解析它。