这里有一个示例代码:
x = XPath.newInstance("//collection/dvd[@id='B']");
Element e = (Element)x.selectSingleNode(doc);
listElement(e, "");
我的问题是,如果经常调用代码,我怎样才能使它快速。文档没有说明任何内容(XPath API doc)。
如果您有使用JDOM和XPath的经验,请告诉我答案。
答案 0 :(得分:2)
仅为了记录,将JDOM链接到其默认实现Jaxen的适配器不线程安全。通过对org.jdom.xpath代码的快速研究可以很容易地得出结论。
关于线程安全的更普遍的问题:如果API的文档没有明确声称是线程安全的,那么假设必须始终不是(并且几乎总是如此)。而且,对线程安全声明提出质疑始终是谨慎的。
答案 1 :(得分:1)
找到回答这些问题的文档可能很困难:例如,很多人都惊讶地发现DOM不是线程安全的。我相信JDOM是,但我不知道它的XPath引擎。如果您使用Saxon作为XPath引擎(它适用于JDOM),则s9api接口的设计明确允许在一个线程中创建编译表达式并在多个线程中同时使用。