JAVA SAX DefaultHandler startCDATA()未触发 [英] JAVA SAX DefaultHandler startCDATA() not firing

查看:292
本文介绍了JAVA SAX DefaultHandler startCDATA()未触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试解析并在以下标记中检测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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆