我正在尝试解析并检测标签中CDATA的开头,如:
<child><![CDATA[data goes here]]></child>
我有一个扩展Default处理程序的类
class MyXmlDoc extends DefaultHandler{
startElement()
和endElement()
的方法正确触发,但startCDATA()
永远不会触发。我的characters()
方法选择'数据在这里',因此看起来检测到CDATA'包装'但是???
感谢您的任何见解!
答案 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%29和http://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