JAVA SAX DefaultHandler startCDATA()未触发

时间:2011-05-27 03:53:35

标签: java sax cdata

我正在尝试解析并检测标签中CDATA的开头,如:

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

我有一个扩展Default处理程序的类

class MyXmlDoc extends DefaultHandler{

startElement()endElement()的方法正确触发,但startCDATA()永远不会触发。我的characters()方法选择'数据在这里',因此看起来检测到CDATA'包装'但是???

感谢您的任何见解!

2 个答案:

答案 0 :(得分:4)

CDATA是一个词汇事件。常规处理程序(内容处理程序,错误处理程序)不处理这些事件。你需要为你的读者设置一个词法处理程序,如果它支持一个。词法处理程序是SAX2扩展,因此Java XMLReader使用setProperty方法进行设置。

请参阅:http://download.oracle.com/javase/6/docs/api/org/xml/sax/XMLReader.html#setProperty%28java.lang.String,%20java.lang.Object%29http://download.oracle.com/javase/6/docs/api/org/xml/sax/ext/LexicalHandler.html

答案 1 :(得分:1)

您的数据是否在那里被转移?你是如何编写xml doc的?

这可能对您有所帮助: How to output a CDATA section from a Sax XmlHandler

这也非常冗长: http://www.coderanch.com/t/127987/XML/read-cdata-sax-parser