XML解析:JDOMまたはREGEX?どちらが速いですか?
-
28-10-2019 - |
質問
私の同僚は、クライアントによって課されるプログラミングルールをチェックするために複数のXMLファイルを解析する必要があるEclipseプラグインを開発する必要があります(たとえば、no xsl:for-each
, 、または宣言されているが使用されていない名前空間はありません)。定期的に解析される約1000のファイルがあり、各ファイルには約300〜400行が含まれています。
どのソリューションがそれをするのがより速いのか疑問に思っていました。私はJdomを考えています、そして彼はRegexを考えています。
誰が私たちがどちらが最適かを決めるのを手伝うことができますか?
ありがとう
解決
すべてのチェックが単純な「いいえ」または名前空間がない場合、STAXパーサーが最適です。ドキュメントを介してドキュメントをストリーミングしているだけなので、すべての開始要素「イベント」を取得してからチェックを行います。このために、パーサーは比較的少ないメモリを必要とします。
参照チェックする必要がある場合は、ツリーを簡単に歩くことができるため、DOMの方が良い場合があります(おそらくXpath経由)。
他のヒント
dom、渡されます。正規表現は狂気です。ジョブを目的としたツールを使用します。
再帰的な構造を修復的に解析することはできません。したがって、本当にシンプルなXMLファイルがない限り、XMLの解析ははるかに高速になり、コードはやや正気になります(バグを見つけるために無限の時間を費やすことはありません)。
ファイルはかなり小さいので、JDOMはあなたの仕事をはるかに簡単にします。大きなファイルの場合、 サックス または同様のパーサー(そのため、ファイル全体をRAMに保持する必要はありません)。
私はあなたが正規表現を使用してXMLを解析しようとします、あなたは痛みの世界に入ります。速度が重要な場合、イベントベースのAPIを使用することは、DOM/JDOMよりも少し速い場合があります。