我有一个关注效率的Java程序。在那里我使用XPaths。
在XPath中,我可以选择从root开始的元素
/root/a/b/c/d/e
或使用descendent-or-self
轴:
//e
这两者中最有效的方法是什么?
答案 0 :(得分:3)
直接路径往往比使用更一般的后代或自我(//
)轴的路径更好,但是:
答案 1 :(得分:1)
我认为/ root / a / b / c / d / e会更有效率,因为在第一种情况下,XPath处理器可以消除很多分支,而在第二种情况下(// e) XPath处理器必须搜索整个文档树。
您应该编写一个小型Java程序,该程序可以使用两种不同的方法,然后查看运行1000次循环所需的时间。
答案 2 :(得分:1)
了解领先的/
和//
结构非常重要。
前导/
启动始终与根节点相关的路径。因此,即使我们正在搜索子节点,XPath:
root/a/b/c
...仍将返回XML文档中的每个c
节点,即使它们不是第一个c
节点的后代。同样,XPath:
//e/
...仍会返回XML文档中的每个e
节点,而不仅仅是第一个c
节点的后代。