Jul 01, 2007 16:26
Выполню сегодня норму за месяц по найденным граблям...
Если пользуетесь SAX-парсером в java, никогда не делайте в characters() у
DocumentHandler присвоение вида:
myTagCdata = new String(ch, start, length);
а вместо него что-то типа:
myTagCdata += new String(ch, start, length);
Все из-за того, что cdata конкретного тега может прийти не одним, а несколькими
кусками, к чему и следует быть готовым. Не скажу, как везде, а в Xerces
имплементации такое поведение возможно при заполнении внутреннего кольцевого
буфера парсера, т. е. первая часть cdata попадает в самый конец буфера, а
вторая в начало, что приводит к двум отдельным вызовам characters().
java,
xml