2011-05-27 105 views
2

我試圖解析和像一個標籤內檢測到CDATA的開始:JAVA SAX DefaultHandler的startCDATA()不費一槍

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

我有一個擴展的默認處理程序

class MyXmlDoc extends DefaultHandler{

用方法startElement()endElement()發射正確,但startCDATA()永遠不會發射。我的characters()方法拿起'數據在這裏',所以它似乎檢測到CDATA'包裝',但???

感謝您的任何見解!

回答

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

+0

謝謝!我能夠實現一個LexicalHandler並使用setProperty() – jjdebarros 2011-05-31 18:26:28

相關問題