Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中存储和操作从RSS提要检索到的信息?_Java_Rss_Linked List_Saxparser - Fatal编程技术网

如何在Java中存储和操作从RSS提要检索到的信息?

如何在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

嗯,我遇到了另一个rssparing问题。

以下是我迄今为止所做的工作。
我已成功访问了所需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)。