SAX Parser возвращает первый символ заголовка - PullRequest
2 голосов
/ 26 декабря 2011

Я создаю приложение для Android, которое анализирует RSS-канал с использованием SAX-анализатора.Когда я печатаю заголовок, я получаю только первый символ.

public void characters(char ch[], int start, int length)
    {       

        String theString = new String(ch,start,length);
        //Log.i("RSSReader","characters[" + theString + "]");

        switch (currentstate)
        {
            case RSS_TITLE:
                _item.setTitle(theString);
                Log.i("tag","Length:"+length);
                currentstate = 0;
                break;
                }
       }

Здесь в журнале говорится, что длина равна 1 всегда.Это даже происходит с описанием.Раньше он работал с другим каналом, но теперь у меня возникли проблемы, когда я переключился на другой канал.Вот пример тега заголовка:

<title>&quot;The Color of the Night is not always Black II_(Explored Highest Position #1)&quot; by xris74</title>

То, что я напечатал на экране, это "(цитата)

Заранее спасибо!

РЕДАКТИРОВАТЬ 1: я добавилстроитель строк.

1. Added new string builder variable:
StringBuilder newString;
2. On Element Start, if its title
newString = new StringBuilder();
3. On Element End, if its title
_item.setTitle(newString.toString());
4. In characters function, if its title tag, than:
newString.append(ch,start,length);

1 Ответ

1 голос
/ 26 декабря 2011

Функция characters() может вызываться много раз после начального тега и перед конечным тегом.Каждый раз он приносит вам несколько байтов, но не обязательно все байты одновременно за один вызов.

Таким образом, вы можете создать функцию StringBuilder in onStartTag.Затем добавляйте к этому StringBuilder каждый раз, когда вы вводите функцию символов.Затем, когда вы введете функцию onEndTag для этого тега, ваш StringBuilder будет иметь все символы.Что добавить, определяется параметрами offset и length функции characters

...