如何在Java中存储和操作从RSS提要检索到的信息?
嗯,我遇到了另一个rssparing问题。如何在Java中存储和操作从RSS提要检索到的信息?,java,rss,linked-list,saxparser,Java,Rss,Linked List,Saxparser,嗯,我遇到了另一个rssparing问题。 以下是我迄今为止所做的工作。 我已成功访问了所需RSSFeed中的数据。 据我所知,我将信息毫无问题地存储到Item类对象中。这个类包含标题、描述、链接和发布日期 public class Item { private String link; private String title; private String pubDate; private String description; // Default Constructor publ
以下是我迄今为止所做的工作。
我已成功访问了所需RSSFeed中的数据。
据我所知,我将信息毫无问题地存储到Item类对象中。这个类包含标题、描述、链接和发布日期
public class Item {
private String link;
private String title;
private String pubDate;
private String description;
// Default Constructor
public Item()
{
link = new String();
title = new String();
pubDate = new String();
description = new String();
}
// Parameterized Constructor
public Item(String iTitle, String iDescription, String iLink, String iPubDate)
{
link = iLink;
title = iTitle;
pubDate = iPubDate;
description = iDescription;
}
public void setDate(String newPubDate)
{
pubDate = newPubDate;
}
public void setLink(String newLink)
{
link = newLink;
}
public void setTitle(String newTitle)
{
title = newTitle;
}
public void setDescription(String newDescription)
{
description = newDescription;
}
public String getDate()
{
return pubDate;
}
public String getLink()
{
return link;
}
public String getTitle()
{
return title;
}
public String getDescription()
{
return description;
}
public String toString()
{
return "Title: " + title + "\n" + "Publication Date: " + pubDate + "\n" + "Description: " + description + "\n" + "Link: " + link;
}
以下是我的RSSParser处理程序类
import org.xml.sax.Attributes;
import lists.LinkedUnorderedList;
import org.xml.sax.helpers.DefaultHandler;
public class RSSParser extends DefaultHandler{
int itemCount = 0;
boolean item = false;
boolean link = false;
boolean title = false;
boolean pubDate = false;
boolean description = false;
Item theItem = new Item();
String itemPubDate = new String();
LinkedUnorderedList<Item> theUnorderedList = new LinkedUnorderedList();
public void startDocument()
{
System.out.println("Starts Parsing the Document.....\n");
}
public void endDocument()
{
System.out.println(theUnorderedList + "\n\n" + itemCount);
System.out.println("\nEnds parsing Document...");
}
public void startElement(String nameSpaceURI, String localName, String qName, Attributes atts)
{
if (qName.equalsIgnoreCase("item"))
{
theUnorderedList.addToRear(theItem);
theItem = new Item();
itemCount++;
}
else if ( qName.equalsIgnoreCase("link") )
{
link = true;
}
else if ( qName.equalsIgnoreCase("title") )
{
title = true;
}
else if ( qName.equalsIgnoreCase("pubDate") )
{
pubDate = true;
}
else if ( qName.equalsIgnoreCase("description") )
{
description= true;
}
}
public void endElement(String nameSpaceURI, String localName, String qName, Attributes atts)
{
System.out.print("End Element: " + qName );
}
public void characters(char[] ch, int start, int length)
{
if ( title )
{
//System.out.println("Title: " + new String( ch, start, length ) );
theItem.setTitle( new String( ch, start, length ) );
title = false;
}
else if ( link )
{
//System.out.println("Link: " + new String( ch, start, length ) );
theItem.setLink( new String( ch, start, length ) );
link = false;
}
else if ( description )
{
//System.out.println("Description: " + new String( ch, start, length ) );
theItem.setDescription( new String( ch, start, length ) );
description = false;
}
else if ( pubDate )
{
itemPubDate = new String( ch, start, length );
//System.out.println("PubDate: " + itemPubDate + "\nItemCount: " + itemCount + "\n\n");
theItem.setDate( new String( ch, start, length ) );
pubDate = false;
}
} // ends characters Method
//import java.net.URL;
//import java.util.Scanner;
import java.io.IOException;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;
//import java.io.InputStreamReader;
import org.xml.sax.helpers.XMLReaderFactory;
public class Project4 {
public static void main (String [] args) throws IOException, SAXException
{
XMLReader read = XMLReaderFactory.createXMLReader();
RSSParser parser= new RSSParser();
read.setContentHandler(parser);
read.parse("http://feeds.ign.com/ign/games-articles");
} // Ends main
}
到目前为止,这是可行的。注释代码打印出了我想要的内容,即打印我存储在链接列表中的项目列表。
我的主要目标是将所有这些项目放入一个无序的链接列表中,这是我正确完成的。但我的问题是,如何在应用程序类中授予用户访问此列表的权限?例如,我希望能够向用户提供从列表中删除项目的选项。我知道链表的方法以及如何创建GUI,但要清楚,我不知道如何从应用程序类访问此列表。还是我在错误的位置创建了LinkedList?
谢谢您需要将RSSParser改为Project4类中的变量,并提供访问它的方法。静态main方法应该实例化Project4的一个实例,并创建一个新的RSSParser()。使用该实例解析提要并创建一个getter方法,以便从GUI访问它 例如,类似这样的内容:
public class Project4 {
private parser RSSParser;
public RSSParser getParser() {
return parser
}
public static void main (String [] args) throws IOException, SAXException {
Project4 p = new Project4();
XMLReader read = XMLReaderFactory.createXMLReader();
p.parser= new RSSParser();
read.setContentHandler(p.parser);
read.parse("http://feeds.ign.com/ign/games-articles");
/// loop here and connect up your GUI
}
}
另一方面,您可能想看看罗马的RSS源解析项目。谢谢!!!!!这么多!!!几天来我一直在努力完成这件事。是的,我曾考虑过使用罗马,但我不明白(别笑)。我肯定会对此进行更多的研究,但我主要关心的是能够使用默认的Java库来处理这个项目。(SAX或DOM)。