Итак, у меня есть отличный исходный код для чтения RSS, он отлично работает, но у меня есть одна проблема, мне нужно преобразовать дату с пт, 30 марта 2012 05:09:20 +0000 в простой формат "гггг / мм / дд чч: мм: сс ", но я не могу заставить его работать, потому что конфликтуют два типа данных, NodeList и Date.
public class rssparser {
private static NodeList newdate;
private static NodeList formmatter;
private static NodeList formatter;
private static Intent event;
private static ResourceBundle bundle;
private static NodeList pubdate1;
public static void parse(){
URL url;
try {
url = new URL("http://www.gaudeamus.fm/feed/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc;
doc = db.parse(url.openStream());
doc.getDocumentElement().normalize();
NodeList itemLst = doc.getElementsByTagName("item");
arrays.PodcastTitle = new String[itemLst.getLength()];
arrays.PodcastURL = new String[itemLst.getLength()];
arrays.PodcastContent = new String[itemLst.getLength()];
arrays.PodcastMedia = new String[itemLst.getLength()];
arrays.PodcastPubDate = new String[itemLst.getLength()];
// SimpleDateFormat pubdate = new SimpleDateFormat("yyyy MM dd HH:mm:ss");
// Date formmater = formatter.parse("Sat, 24 Apr 2010 14:01:00 GMT");
for(int i=0; i < itemLst.getLength(); i++){
Node item = itemLst.item(i);
if(item.getNodeType() == Node.ELEMENT_NODE) {
Element ielem = (Element) item;
NodeList title = ielem.getElementsByTagName("title");
NodeList link = ielem.getElementsByTagName("link");
NodeList pubdate = ielem.getElementsByTagName("pubDate");
//NodeList description = ielem.getElementsByTagName("description");
NodeList content = ielem.getElementsByTagName("content:encoded");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String formatedDate =sdf.parse(pubdate);
arrays.PodcastTitle[i] = title.item(0).getChildNodes().item(0).getNodeValue();
arrays.PodcastTitle[i] +=formatedDate+" \n" + pubdate.item(0).getChildNodes().item(0).getNodeValue();
arrays.PodcastURL[i] = link.item(0).getChildNodes().item(0).getNodeValue();
arrays.PodcastContent[i] = content.item(0).getChildNodes().item(0).getNodeValue();
arrays.PodcastPubDate[i] = pubdate.item(0).getChildNodes().item(0).getNodeValue();
//arrays.PodcastMedia[i] = mediaurl;
}
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Это код,
String formatedDate =sdf.parse(pubdate);
но моя проблема в том, что для разбора нужен тип String, но у меня есть NodeList, я перепробовал много вариантов, но он не будет работать. Если я делаю не анализ, а форматирую String formatedDate =sdf.format(pubdate);
, это не выдает никакой ошибки, но при запуске приложения происходит сбой при загрузке новостей.
Может ли кто-нибудь мне помочь? Извините за плохой английский.