Ваш элемент <desc>
содержит другую (недопустимую) структуру XML. В вашем примере startElement()
будет запущен для <p>
, затем <span>
, затем еще один <p>
. Если вы хотите извлечь только текст, вы можете объединить то, что метод characters()
возвращает для всех дочерних элементов <desc>
, пока не получите уведомление о конце элемента <desc>
с помощью endElement()
.
Что-то вроде
private boolean isDescStarted = false;
private StringBuilder textDesc = new StringBuilder();
public void startElement(String uri, String name, String qName, Attributes atts) {
if(name.equals("desc") {isDescStarted = true;}
}
public void endElement(String uri, String name, String qName) {
if(name.equals("desc") {
isDescStarted = false;
String fullTextDesc = textDesc.toString(); // do whatever you want with this string now
}
}
public void characters(char[] buf, int offset, int length) {
if (isDescStarted) {
textDesc.append(new String(buf, offset, length));
}
}