java - 使用stringbuilder和bufferedreader读取多个链接

标签 java android bufferedreader stringbuilder delimiter

我正在尝试从下面的代码中的 xml 源 txt 文件中读取多个 rss 链接。我使用 ; 作为分隔符。从调试来看,它似乎将所有链接发送到RSS_LINK,这显然是行不通的。

StringBuilder rsslink = new StringBuilder();
InputStream is = getResources().openRawResource(R.raw.xmlsource);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;

try {
    while ((line = br.readLine()) != null) 
    {
       rsslink.append(line) ;
    }
    String [] arr = rsslink.toString().split(";"); 
    for (int i = 0; i < arr.length; i++)
        {
        }
} 
catch (IOException e) 
{
    e.printStackTrace();
}
String RSS_LINK = rsslink.toString();

Log.d(Constants.TAG, "Service started");
List<RssItem> rssItems = null;
try 
{
    XMLRssParser parser = new XMLRssParser();
    rssItems = parser.parse(getInputStream(RSS_LINK));
} 
catch (XmlPullParserException e) 
{
    Log.w(e.getMessage(), e);
} 
catch (IOException e) 
{
    Log.w(e.getMessage(), e);
}
Bundle bundle = new Bundle();
bundle.putSerializable(ITEMS, (Serializable) rssItems);
ResultReceiver receiver = intent.getParcelableExtra(RECEIVER);
receiver.send(0, bundle);
}

新代码

protected void onHandleIntent(Intent intent) 
{   
    StringBuilder rsslink = new StringBuilder();
    InputStream is = getResources().openRawResource(R.raw.xmlsource);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line = null;

    try {
        while ((line = br.readLine()) != null) 
        {
           rsslink.append(line) ;
        }
        String [] arr = rsslink.toString().split(";"); 
        for (int i = 0; i < arr.length; i++)
        {
            String RssLink = arr[i];

            Log.d(Constants.TAG, "Service started");
            List<RssItem> rssItems = null;
            try 
            {
                XMLRssParser parser = new XMLRssParser();
                rssItems = parser.parse(getInputStream(RssLink));
            } 
            catch (XmlPullParserException e) 
            {
                Log.w(e.getMessage(), e);
            } 
            catch (IOException e) 
            {
                Log.w(e.getMessage(), e);
            }
            Bundle bundle = new Bundle();
            bundle.putSerializable(ITEMS, (Serializable) rssItems);
            ResultReceiver receiver = intent.getParcelableExtra(RECEIVER);
            receiver.send(0, bundle);
        }
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

最佳答案

您拆分了 rsslink,但没有使用生成的 arr,而是继续使用 rsslink,其中仍然包含所有链接和 ;组合。

您需要将所有 rss 处理(解析等)放入循环中:

String [] arr = rsslink.toString().split(";"); 
for (int i = 0; i < arr.length; i++)
    {
        // HERE IS THE PLACE TO HANDLE a single RSS Link. arr contains the single link
    }

关于java - 使用stringbuilder和bufferedreader读取多个链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281100/

相关文章:

java - 从 bufferedReader 到 arraylist 的字符串

java - 如何将GC日志写入命名管道

java - 为 POJO 类生成执行 ANT 脚本时进行 Hibernate 日志记录

java - 实现 Java Swing 工作线程时出现问题

android - 在 Android 上收听音量变化事件

android - Image Picker Intent - 在线存储照片的空路径

java - Readline 太慢了——还有更快的吗?

java - 有没有办法手动损坏文件?

android - 居中复选框 View

Java:自动关闭BufferdStreamReader中的文件以避免FileNotFoundException(打开文件太多)