我正在开发一个大规模评估网页(数百万)的项目。与典型的Web爬网程序不同,我的评估程序需要为其评估的每个页面构建一个JDOM
对象,以便对其运行XPath
个查询。
我们当前的实现使用SAXBuilder
来实例化JDOM对象(其中一些然后被缓存以备将来使用)以便查询XPath。但是简单的分析显示实例化过程实际上消耗的时间最多,远远超过查询XPath,因此我不得不寻找替代解决方案。有没有办法减少这种开销,例如:
编辑:
我们正在使用JDOM
2.X.
我们初始化JDOM
对象的方式示例:
public static List<Element> evaluateHTML(File html, String pattern) throws JDOMException, IOException {
Element page = saxBuilder.build(html).getRootElement();
XPathBuilder xpath = new XPathBuilder(pattern, Filters.element());
//...set xpath namespaces...
XPathExpression expr = xpath.compileWith(xpathFactory);
return expr.evaluate(page);
}
其中xpathFactory
是静态成员,并且我们为每个评估的html文件调用evaluateHTML
。