JAVA SAX DefaultHandler startCDATA () не запускается - PullRequest
2 голосов
/ 27 мая 2011

Я пытаюсь проанализировать и определить начало CDATA в теге вроде:

<child><![CDATA[data goes here]]></child>

У меня есть класс, расширяющий обработчик по умолчанию

class MyXmlDoc extends DefaultHandler{

с методами для startElement() и endElement(), которые стреляют корректно, но startCDATA() никогда не срабатывает. Мой characters() метод получает «данные идут сюда», поэтому кажется, что «обертка» CDATA обнаружена, но ???

Спасибо за понимание!

Ответы [ 2 ]

4 голосов
/ 28 мая 2011

CDATA - это лексическое событие.Обычные обработчики (обработчик содержимого, обработчик ошибок) не обрабатывают эти события.Вам нужно установить лексический обработчик для вашего читателя, если он поддерживает его.Лексический обработчик является расширением SAX2, поэтому для его установки Java XMLReader использует setProperty метод.

1 голос
/ 27 мая 2011

Ваши данные сбежали туда? как вы пишете XML документ?

Это может помочь вам: Как вывести раздел CDATA из Sax XmlHandler

Это тоже довольно многословно: http://www.coderanch.com/t/127987/XML/read-cdata-sax-parser

...