1

私の同僚は、複数のXMLファイルを解析してクライアントによって課されたプログラミングルールをチェックする必要があるEclipseプラグインを開発する必要があります(たとえば、xsl:for-each宣言されているが使用されていない名前空間がない、またはない)。定期的に解析されるファイルは約1000あり、各ファイルには約300〜400行が含まれています。

どのソリューションの方が速いのか疑問に思いました。私はJDOMを考えており、彼はRegExを考えています。

誰でも私たちがどれが最良かを決めるのを手伝ってくれる?

ありがとう

4

4 に答える 4

7

DOM、手渡します。正規表現は狂気になります。その仕事のために意図されたツールを使用してください。

于 2011-03-21T09:55:16.767 に答える
6

RegExを使用して再帰構造を解析することはできません。したがって、本当に単純なXMLファイルがない限り、XMLの解析ははるかに高速になり、コードはある程度正常になります(したがって、バグを見つけるために無限の時間を費やすことはありません)。

ファイルがかなり小さいので、JDomはあなたの仕事をはるかに簡単にします。より大きなファイルの場合は、SAXまたは同様のパーサーを使用する必要があります(したがって、ファイル全体をRAMに保持する必要はありません)。

于 2011-03-21T09:59:16.950 に答える
3

正規表現を使用してXMLを解析しようとすると、苦痛の世界に入ります。速度が重要な場合、イベントベースのAPIを使用すると、DOM/JDOMよりも少し速くなる可能性があります。

于 2011-03-21T09:57:10.370 に答える
2

すべてのチェックが単純な「no」または名前空間なしの場合は、StAXパーサーが最適です。ドキュメントをストリーミングするだけなので、すべての開始要素の「イベント」を取得してからチェックを実行します。このため、パーサーは比較的少ないメモリを必要とします。

参照チェックが必要な場合は、ツリーを簡単に(おそらくxpathを介して)歩くことができるため、DOMの方が適している場合があります。

于 2011-03-21T10:00:13.300 に答える