<myTag>A & B value</myTag>
(Это не XML. Я предполагаю, что вы имеете в виду A & B value
, чтобы быть правильно сформированным.)
Как правило, вы не можете гарантировать, что ваш обработчик characters()
будет вызываться ровно один раз для каждого элемента. Если в элементе нет текстового содержимого, он вообще не будет вызываться; если есть ссылки на сущности или текст очень длинный, вы, вероятно, будете вызываться более одного раза. Плюс, конечно, любые комментарии, PI или другие элементы там, безусловно, будут нуждаться в нескольких вызовах.
Хотя для предопределенной ссылки на сущность, такой как &
, не свойственно вызывать отдельный обратный вызов для обработчика содержимого, в спецификации нет ничего, чтобы сказать, что это не может произойти в любое время по любой (или нет) причине. В частности:
SAX-парсеры могут возвращать все непрерывные символьные данные в одном фрагменте или могут разбивать их на несколько фрагментов
Следовательно, обработчик SAX должен собирать все отправленные ему фрагменты текстового содержимого и объединять их вместе, когда происходит endElement
, вместо того, чтобы задавать содержимое из одного characters
обратного вызова.