0

我正在尝试使用 xml 解析获取 rss 提要,但在使用 SAXParser 解析 xml 数据时遇到问题

我尝试过类似 In my MainActivity.java

try{


        /****** Creating a new instance of the SAX parser ****************/
        SAXParserFactory saxPF = SAXParserFactory.newInstance();
        SAXParser saxParser = saxPF.newSAXParser();
        XMLReader xmlReader = saxParser.getXMLReader();

        URL url = new URL("http://ibnlive.in.com/ibnrss/rss/world/world.xml");

        myXMLHandler = new FeedsXMLHandler();
        xmlReader.setContentHandler(myXMLHandler);
        xmlReader.parse(new InputSource(url.openStream()));
    }catch (Exception e) {
        e.printStackTrace();
    }

我正在使用从我的处理程序中检索数据

ArrayList<FeedsItems> feedsData = myXMLHandler.getXMLData();
Log.v("size",Integer.toString(feedsData.size()));

这里它的显示大小为零。

我的 FeedsXMLHandler.java

private ArrayList<FeedsItems> dataArray = new ArrayList<FeedsItems>();
private FeedsItems data = null;

@Override
    public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException 
    {
        elementValue = "";
        elementOn = true;

        if (localName.equalsIgnoreCase("rss")) 
        {
            //  data = new FeedsItems();
        } 

        else if (localName.equalsIgnoreCase("item"))
        {
            data = new FeedsItems();
            Log.v("Item","I am in item block");
        }

        else if (localName.equalsIgnoreCase("description")) 
        {
            bufferDesc = new StringBuilder();
            elementOn = true;
        }

        else if (localName.equalsIgnoreCase("title")) 
        {
            bufferTitle = new StringBuilder();
            elementOn = true;
        }
        else if(localName.equalsIgnoreCase("link")) 
        {
            bufferLink = new StringBuilder();
            elementOn = true;

        }
    }

    /*********** Method will be called when the tags of the XML end **************/
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {

        elementOn = false;

        /*** Sets the values after retrieving the values from the XML tags ******/ 
        if (localName.equalsIgnoreCase("title"))
        {
            elementOn = false;

            data.setTitle(bufferTitle.toString());
            bufferTitle.delete(0,bufferTitle.length());
        }   

        else if (localName.equalsIgnoreCase("link")){
            elementOn = false;

            data.setFeedsUrl(bufferLink.toString());
            bufferLink.delete(0,bufferLink.length());
        }

        else if (localName.equalsIgnoreCase("description")){
            elementOn = false;

            data.setDescription(bufferDesc.toString());
            bufferDesc.delete(0, bufferDesc.length());

        }
        else if (localName.equalsIgnoreCase("item")){
            dataArray.add(data);
        }


    }

我无法理解其中有什么问题。我已经在这个方法中使用 SAXParser 实现了 xml 解析。欢迎任何帮助或建议

4

0 回答 0