2013-11-29 3 views
0

Я пытаюсь прочитать более чем одну ссылку rss из файла txt источника xml в коде ниже. В качестве разделителя я использую ;. От отладки, кажется, посылает все ссылки на RSS_LINK, что явно не сработает.Использование stringbuilder и bufferedreader для чтения более чем одной ссылки

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(); 
    } 

ответ

1

Вы разделили rsslink «S, но вместо того, чтобы использовать полученную 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 
    } 
+0

Спасибо, я получил его на несколько работу, перемещая обработку части в течение цикла, а затем посылает 'RSS_LINK = обр [ i] 'Проблема, с которой сталкивается сейчас, состоит в том, что она циклически перемещается по ссылкам и избавляется от предыдущей ссылки, когда она возвращается в начало цикла, поэтому она отображает только содержимое ссылки, которая находится внутри цикла. –

+0

Можете ли вы опубликовать новый код? – jboi

+0

Отправленный новый код под старым –

Смежные вопросы