Метод символов вызывается здесь три раза, чтобы сообщить о содержимом элемента Address из-за присутствия внешней сущности. Вы должны накапливать содержимое обращений к персонажам до тех пор, пока не получите событие endElement, а затем получите полный контент.
Обратите внимание на документацию о методе символов .
Вы также можете извлечь выгоду из использования метода ignorableWhitespace с проверяющим синтаксическим анализатором и соответствующей схемой (например, DTD), чтобы сообщить анализатору, какие пробелы игнорируются (из-за отступа).
В Java это может быть:
class MyHandler extends DefaultHandler {
private StringBuilder acc;
public MyHandler() {
acc = new StringBuilder();
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.printf("Characters accumulated: %s\n", acc.toString());
acc.setLength(0);
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
acc.append(ch, start, length);
}
}