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. 元素“非常”的位置

我知道我可以通过启动这两个 XPATH (2.0) 查询来做到这一点:

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

但是 XML 文件很长,所以我讨厌 XML 解析引擎通过所有文件两次。

是否有更快的组合返回例如具有两个结果的数组,通过文件一次传递?

4

3 回答 3

1

是什么让您认为必须解析 XML 文档两次才能运行两个 XPath 查询?我不知道您使用什么 API 来运行 XPath,但我不知道有那个限制的 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 回答
0

在 XQUERY 语言中:

let $div := /root/div
return
<result>
<cnt>{count($div)}</cnt>
<v-index>{index-of($div, contains(., 'very'))}</v-index>
</result>
于 2013-06-14T20:43:49.463 回答