我正在尝试解析和检测标签中的CDATA的开始,例如:

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

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

class MyXmlDoc extends DefaultHandler{

正确触发startElement()endElement()的方法,但startCDATA()永不触发。我的characters()方法选择了“这里的数据”,因此似乎检测到了CDATA“包装器”,但?

感谢您的见解!

最佳答案

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

关于java - JAVA SAX DefaultHandler startCDATA()未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6147682/

10-10 13:51