2016-05-11 5 views
-3

javaでsaxパーサーを使用してXMLファイルを解析しています。しかし、パーサーが&を検出すると、現在の行はさらに解析されず、次の要素の解析に移ります。java saxパーサーで&のエスケープ方法を完全に解析する方法

私はStringEscapeUtils.escapeHtml(String)を試しましたが、動作しませんでした。

ありがとうございます。

+1

ないもの "を検出&"平均? – immibis

+0

[mcve]を表示してください - 質問は現時点ではあまりにも不明です。 –

答えて

0

SAXParserは、&に遭遇したときにテキスト要素を1つ以上の別々の塊に分割します。

これは私がそれを行う方法です。startElementコールバックで現在の要素名を読み取り、どこかに格納し、チャンクを連結します。

@Override public void characters(char[] ch, int start, int length) throws SAXException { 
    super.characters(ch, start, length); 
    String value = new String(ch, start, length); 
    String oldval = cachedProps.get(elemName); 
    if (oldval!=null) value = oldval+value; 
    cachedProps.put(elemName, value); 
} 

StAXParserを調べて、XMLファイルをストリームとして読み取ることができます。これは、通常、自分のアプリケーションにより適しており、制御可能です。 SAXコールバックインターフェイスは、たまに難しいケースです。

  • DOM =すべてがファイルを開くにRAMに読み込ま
  • SAX =ストリーミング、 "プッシュ" コールバックモード
  • のStAX =ストリーミング、 "プル" モード
関連する問題