2013-05-14 3 views
0

У меня есть структура XMLSAXParser: обрабатывать только конкретный родитель порожденного

<data> 
    <id>id</id> 
    <title>dataTitle</title> 
    <entry> 
     <title>title1</title> 
    </entry> 
    <entry> 
     <title>title2</title> 
    </entry> 
</data> 

И я хочу, чтобы разобрать его и сохранить в списке только название элементы под записью. Как я могу проверить в endElement, что заголовок находится под заголовком? У меня нет NullPointerExpception, потому что парсер пытается сохранить заголовок, который является дочерним.

@Override 
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
    elementOn = true; 
    if ("entry".equals(localName)) { 
     song = new Song(); 
    } 
} 


@Override 
public void endElement(String uri, String localName, String qName) throws SAXException { 
    elementOn = false; 

    if ("title".equalsIgnoreCase(localName)) { 
     song.setTitle(elementValue); 
    } else if ("entry".equalsIgnoreCase(localName)) { 
     songList.add(song); 
    } 
} 
+0

Покажите нам строку, которая вызывает «NullPointerException» – jlordo

+0

song.setTitle (elementValue); Поскольку песня не создана, startElement не имеет элемента ввода –

+1

, вам нужен атрибут 'boolean', который отслеживает, находитесь ли вы в записи или нет. – jlordo

ответ

1

В этом случае, вы можете использовать стек для толчка и поп CDATA в StartElement и EndElement событий соответственно. Поместите проверку в событие endElement, чтобы сохранить только требуемые данные.