前几个字符从标题,RSS阅读器应用程序android切断

时间:2014-08-26 09:06:52

标签: java android rss

我目前正在尝试在Android中制作RSS Feed阅读应用。一切都有效,从某种意义上来说,它转到了RSS提要......并且还拉回了数据。但是,我注意到列表中的第一项是否有前几个字符被切断,我不知道为什么。我确信它与我的characters()函数有关,但是我不确定它是什么。

如果有人能帮助我那会很棒!

感谢。

更新

由于Rakesh Rangani,我现在已经解决了这个问题;如果你遇到类似的问题,请查看下面的答案......它帮助了我!

我指的代码:

    package com.example.rssapplication;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;

/**
 * SAX tag handler
 * 
 * @author ITCuties
 *
 */
public class RssParseHandler extends DefaultHandler {

    private List<RssItem> rssItems;

    // Used to reference item while parsing
    private RssItem currentItem;

    // Parsing title indicator
    private boolean parsingTitle;
    // Parsing link indicator
    private boolean parsingLink;

    public RssParseHandler() {
        rssItems = new ArrayList<RssItem>();
        RssItem g = null;
        //rssItems.add(g);
    }

    public List<RssItem> getItems() {
        return rssItems;
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        if ("item".equals(qName)) {
            currentItem = new RssItem();
        } else if ("title".equals(qName)) {
            parsingTitle = true;            
        } else if ("link".equals(qName)) {
            parsingLink = true;
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if ("item".equals(qName)) {
            rssItems.add(currentItem);
            currentItem = null;
        } else if ("title".equals(qName)) {
            parsingTitle = false;
        } else if ("link".equals(qName)) {
            parsingLink = false;
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

        if (parsingTitle) {
            if (currentItem != null)
                currentItem.setTitle(new String(ch, start, length));        
        } else if (parsingLink) {
            if (currentItem != null) {
                currentItem.setLink(new String(ch, start, length));
                parsingLink = false;
            }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

试试这段代码..

  package com.example.rssapplication;

  import java.util.ArrayList;
  import java.util.List;

  import org.xml.sax.Attributes;
  import org.xml.sax.SAXException;
  import org.xml.sax.helpers.DefaultHandler;

  import android.util.Log;

  /**
   * SAX tag handler
   * 
   * @author ITCuties
   *
   */
 public class RssParseHandler extends DefaultHandler {

 private List<RssItem> rssItems;

// Used to reference item while parsing
private RssItem currentItem;

// Parsing title indicator
private boolean parsingTitle;
// Parsing link indicator
private boolean parsingLink;
String strTitle = "";

public RssParseHandler() {
    rssItems = new ArrayList<RssItem>();
    //RssItem g = null;
    //rssItems.add(g);
}

public List<RssItem> getItems() {
    return rssItems;
}

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    if ("item".equals(qName)) {
        currentItem = new RssItem();
    } else if ("title".equals(qName)) {
        parsingTitle = true;            
    } else if ("link".equals(qName)) {
        parsingLink = true;
    }
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
    if ("item".equals(qName)) {
        rssItems.add(currentItem);
        currentItem = null;
    } else if ("title".equals(qName)) {
        parsingTitle = false;
        strTitle = "";
    } else if ("link".equals(qName)) {
        parsingLink = false;
    }
}

@Override
public void characters(char[] ch, int start, int length) throws SAXException {

    if (parsingTitle) {
        if (currentItem != null)
        {
            strTitle = strTitle
                    + (String) new String(ch, start, length).toString();

            currentItem.setTitle(strTitle);       
        }
    } else if (parsingLink) {
        if (currentItem != null) {
            currentItem.setLink(new String(ch, start, length));
            parsingLink = false;
        }
    }
 }

}