JAVA SAX DefaultHandler startCDATA()未触发 [英] JAVA SAX DefaultHandler startCDATA() not firing
问题描述
我正在尝试解析并在以下标记中检测CDATA的开头:
I am trying to parse and detect the start of the CDATA within a tag like:
< child><![CDATA [数据在这里]]>< / child>
我有一个扩展默认处理程序的类
I have a class that extends the Default handler
类MyXmlDoc使用
> startElement()和 endElement()
正确触发,但 startCDATA()
从不火灾。我的字符()
方法选择数据转到此处,因此看起来检测到CDATA'包装'但是???
with methods for startElement()
and endElement()
that fire correctly but the startCDATA()
never fires. My characters()
method picks up the 'data goes here' so it appears that the CDATA 'wrapper' is detected but ???
感谢您的任何见解!
推荐答案
CDATA是一个词汇事件。常规处理程序(内容处理程序,错误处理程序)不处理这些事件。你需要为你的读者设置一个词法处理程序,如果它支持一个。词法处理程序是SAX2扩展,因此Java XMLReader使用 setProperty
方法进行设置。
CDATA is a lexical event. Regular handlers (content handler, error handler) do not process these events. You need to set a lexical handler for your reader, if it supports having one. Lexical handler is a SAX2 extension so Java XMLReader uses setProperty
method for setting it.
请参阅: http://download.oracle.com/javase/6/docs/api/org/xml/sax/XMLReader.html#setProperty%28java.lang.String,%20java.lang.Object%29 和 http://download.oracle。 com / javase / 6 / docs / api / org / xml / sax / ext / LexicalHandler.html
这篇关于JAVA SAX DefaultHandler startCDATA()未触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!