Android разбора rss, получить дочерние элементы - PullRequest
0 голосов
/ 28 января 2011
private class RSSHandler extends DefaultHandler
{
    final int stateUnknown = 0;
    final int stateTitle = 1;
    int state = stateUnknown;

    int numberOfTitle = 0;
    String strTitle = "";
    String strElement = "";

    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        strTitle = "--- Start Document ---\n";
    }

    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        strTitle += "--- End Document ---";
        streamTitle = "Number Of Title: " + String.valueOf(numberOfTitle) + "\n"
                    + strTitle;
    }

    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        // TODO Auto-generated method stub
        if (localName.equalsIgnoreCase("title"))
        {
            state = stateTitle;
            strElement = "Title: ";
            numberOfTitle++;
        }
        else if (localName.equalsIgnoreCase("link"))
        {
            state = stateTitle;
            strElement = "Link: ";
            numberOfTitle++;
        }
        else
        {
            state = stateUnknown;
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {

        // TODO Auto-generated method stub
        if (localName.equalsIgnoreCase("title"))
        {
            strTitle += strElement + "\n";
        }
        else if (localName.equalsIgnoreCase("link"))
        {
            strTitle += strElement + "\n";
        }

        state = stateUnknown;
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        // TODO Auto-generated method stub
        String strCharacters = new String(ch, start, length);
        if (state == stateTitle)
        {
            strElement += strCharacters;
        }
    }

}

Теперь я получаю все элементы "ссылка" и "заголовок" на всех уровнях.Но что мне нужно набрать, чтобы получить только элементы "title", от которых происходят дочерние элементы.Пример:

<title>foo</title>
    <item>
        <title>bar</title>
    </item>

Я хочу только "бар".Спасибо

1 Ответ

0 голосов
/ 17 июля 2011

Вместо ответа на ваш вопрос я бы предложил вам перейти сюда: Работа с XML на Android

...