【问题标题】:JAVA SAX DefaultHandler startCDATA() not firingJAVA SAX DefaultHandler startCDATA() 未触发
【发布时间】:2011-09-03 02:39:46
【问题描述】:

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

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

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

class MyXmlDoc extends DefaultHandler{

startElement()endElement() 的方法可以正确触发,但 startCDATA() 永远不会触发。我的characters() 方法获取了“数据在此处”,因此似乎检测到了 CDATA“包装器”,但是 ???

感谢您的任何见解!

【问题讨论】:

    标签: java sax cdata


    【解决方案1】:

    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

    【讨论】:

    • 谢谢!我能够实现 LexicalHandler 并使用 setProperty()
    【解决方案2】:

    您的数据是否在那里被转义?你是怎么写xml文档的?

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 2016-07-12
      • 2013-03-26
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 2012-07-11
      • 2010-09-22
      相关资源
      最近更新 更多