0

次のような長いローカル XML ファイルがあります。

<root>
  <div>this</div>
  <div>is</div>
  <div>a</div>
  ...
  <div>very</div>
  <div>long</div>
  <div>list</div>
</root>

私は知る必要がある:

  1. thos div 要素の総数
  2. 「非常に」要素の位置

次の 2 つの XPATH (2.0) クエリを起動することで、これを実行できることがわかっています。

1.  count(/root/div)
2.  index-of(/root/div,"very")

しかし、XML ファイルは長いので、XML 解析エンジンがすべてのファイルを 2 回通過するのは嫌です。

たとえば、ファイルを 1 回通過する 2 つの結果を含む配列を返す、より高速な組み合わせはありますか?

4

3 に答える 3

1

2 つの XPath クエリを実行するために XML ドキュメントを 2 回解析する必要があると考える理由は何ですか? XPath の実行に使用している API はわかりませんが、その制限のある API については知りません。

于 2013-06-11T07:22:40.513 に答える
0

短い答え: いいえ、または少なくとも私はそれを疑っています。

長い答え: 単一のパスで実行できますが、XPath を呼び出しているものによってのみ実行できます。擬似コード:

FIND ALL DIVS USING XPath(/root/div), ASSIGN TO x
VAR i = 0
VAR v = -1
LOOP THROUGH ALL x
    INCREMENT COUNTER i
    IF x' EQUALS 'very' AND v EQUALS -1
        v = i
于 2013-06-11T03:09:12.790 に答える