2017-04-25 9 views
0

は次のXMLタグからCDATAタグコンテンツ(カテゴリ)を取得する方法がある子タグ以下tagcontentを得る:SAXパーサー:

<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. スタートは、このコンテンツは常にCDATA内容ではないことを言及するのを忘れてしまったあなたの答えのための

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

おかげで、解析します。私もいくつかのレガシーコードで作業していますし、DefaultHandlerはコンテンツハンドラとして使用されていますが、それを字句ハンドラと組み合わせることはできますか? –

+0

@ siki_2014質問が分かりません。 'DefaultHandler2'は' DefaultHandler'の代わりに 'LexicalHandler'として使うことができます。クラスが利用できないことを意味しますか?どのJavaバージョンを使用していますか? –

+0

@ siki_2014はい。 'class MyHandler extends DefaultHandlerはLexicalHandler'を実装しています。 'LexicalHandler'からメソッドを実装します。 'DefaultHandler2'の利点は、すべてのメソッドを実装する必要がないということです。 –