Что делает characters
, так это доставляет содержимое между тегами элементов XML (в чанках, по одному чанку на вызов метода). Так
если у вас есть элемент XML, такой как
<Foo someattrib=“” />
тогда characters
не вызывается, потому что там нет контента, о котором парсер мог бы вам рассказать.
Если вы полагаетесь на то, что ваш метод символов должен вызываться здесь, даже если тег пуст, вы делаете это неправильно .
Метод символов добавляет текст элемента в буфер, но startElement и endElement должны отвечать за очистку и чтение из буфера, потому что endElement - это место, где вы знаете, что получили весь текст элемента. Должно быть нормально, чтобы символы не вызывались, если нечего читать.
Поскольку у вас может не быть всего содержимого в каком-либо однозначном символе, вызовите , и в этом методе не должно быть никакой бизнес-логики. Если это так, ваш код в какой-то момент не будет работать.
О том, как реализовать символы, см. в этом примере . Если вы хотите прочитать значения атрибутов, см. в этом примере .