X Tutup
package javaxt.rss; import org.w3c.dom.*; //****************************************************************************** //** RSS Item //****************************************************************************** /** * Used to represent an entry in an RSS feed. * ******************************************************************************/ public class Item { private String title; private String description; private String author; private String creator; private String category; private java.net.URL link; private java.net.URL origLink; //<--FeedBurner private java.util.Date date; private Location location; private java.util.ArrayList media = new java.util.ArrayList(); //************************************************************************** //** Constructor //************************************************************************** public Item(){} //************************************************************************** //** Constructor //************************************************************************** public Item(String title, java.net.URL link, java.util.Date date){ this.title = title; this.link = link; this.date = date; } //************************************************************************** //** Constructor //************************************************************************** /** Creates a new instance of this class using an XML node from an RSS Feed. */ protected Item(Node item, java.util.HashMap namespaces) { String mediaNS = namespaces.get("http://search.yahoo.com/mrss"); if (mediaNS==null) mediaNS = "media"; String geoNS = namespaces.get("http://www.w3.org/2003/01/geo/wgs84_pos#"); if (geoNS==null) geoNS = "geo"; String pubDate = null; String dcDate = null; String updated = null; String description = null; String subtitle = null; String summary = null; String lat = null; String lon = null; java.util.ArrayList mediaNodes = new java.util.ArrayList(); NodeList nodeList = item.getChildNodes(); for (int i=0; i0){ try{ link = new java.net.URL(url); } catch(Exception e){} } } //Parse FeedBurner Link else if(nodeName.equals("feedburner:origLink")){ if (nodeValue!=null){ try{ origLink = new java.net.URL(nodeValue); } catch(Exception e){} } } //Enclosure (e.g. TASS News agency) else if (nodeName.equals("enclosure")){ addMedia(new Media(node)); } else if (nodeName.equals("category")){ category = nodeValue; } else if(Location.isLocationNode(nodeName, namespaces)){ location = new Location(node, namespaces); } else if (nodeName.equals("lat") || nodeName.equals(geoNS + ":lat")){ lat = nodeValue; } else if (nodeName.equals("long") || nodeName.equals(geoNS + ":long")){ lon = nodeValue; } else{ if (nodeName.startsWith(mediaNS + ":")){ mediaNodes.add(node); } } } } //Set date String date = pubDate; if (date==null || date.length()==0) date = dcDate; if (date==null || date.length()==0) date = updated; if (date!=null && date.length()>0){ try{ this.date = Parser.getDate(date); } catch(java.text.ParseException e){ } } //Set description String desc = description; if (desc==null || desc.length()==0) desc = subtitle; if (desc==null || desc.length()==0) desc = summary; this.description = desc; //Parse media nodes if (!mediaNodes.isEmpty()){ //Check if there are any content nodes and if those nodes have children (e.g. The Guardian News Feed) for (Node mediaNode : mediaNodes){ String nodeName = mediaNode.getNodeName().toLowerCase(); if (nodeName.equals(mediaNS + ":content")){ NodeList nodes = mediaNode.getChildNodes(); for (int i=0; i info = new java.util.HashMap(); String title = getTitle(); if (title!=null){ title = title.trim(); if (title.length()>0) info.put("title", title); } String desc = getDescription(); if (desc!=null){ desc = desc.trim(); if (desc.length()>0) info.put("description", desc); } if (link!=null) info.put("link", link); if (date!=null) info.put("pubDate", date); if (!info.isEmpty()){ str.append(" \n"); java.util.Iterator it = info.keySet().iterator(); while (it.hasNext()){ String key = it.next(); Object val = info.get(key); str.append(" <" + key + ">"); if (val instanceof String){ str.append(""); } else if (val instanceof java.util.Date){ String d = Feed.formatDate((java.util.Date) val); str.append(d); } else{ str.append(val); } str.append("\n"); } str.append(" \n"); } return str.toString(); } }
X Tutup