2017-04-25 36 views
0

是否有一种方式来获得从以下XML标记CDATA标签内容(类别):SAX解析器:拿到下面子标签tagcontent

<category> 
    <h1>Some data</h1> 
    <![CDATA[<br> some data ...]]> 
    <h1>Some data</h1> 
    <![CDATA[<br> more data ...]]> 
</category> 

能在某种程度上字符的方法获取类别标签,但外面H1标签内唯一内容?

感谢

回答

0
  1. 覆盖startCDATA()DefaultHandler2实施endCDATA()方法。

    DefaultHandler2 handler2 = new DefaultHandler2() { /* ... */ } 
    
  2. 配置XMLReader

    SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser(); 
    XMLReader xmlReader = saxParser.getXMLReader(); 
    xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", handler2); 
    
  3. 开始解析

    saxParser.parse(/* input source */, handler2); 
    
+0

谢谢您的回答,一个忘了提,此内容并不总是CDATA内容。我也在研究一些遗留代码,并且DefaultHandler被用作内容处理程序,它是否可以与词法处理程序结合使用? –

+0

@ siki_2014不知道我明白这个问题。 'DefaultHandler2'可以代替'DefaultHandler'和'LexicalHandler'。你的意思是说这个班不可用?你使用哪个Java版本? –

+0

@ siki_2014是的。 'MyHandler类扩展了DefaultHandler实现的LexicalHandler'。实施来自'LexicalHandler'的方法。 'DefaultHandler2'的优点是,你不需要实现所有的方法。 –