SAX Xerces

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

Previous post Next post
Up