我正在尝试解析和检测标签中的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%29和http://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/