2011-09-06 29 views
3

一种方式来与等于一些预定义的字符串文本()CUL链接很简单:Jsoup:“选择只用文字链接()等于”

Elements links = document.getElementsByTag("a");    
for (Element link : links) { 
    if (link.text().equals("So & so") || link.text().equals("such & such") { 
     // add link.attr("href") to our container; 
    } 
}     

但作为文本的数量()的条件下生长,这种方法看起来效率越来越低。

在Jsoup有没有更好的方法来完成这项工作?

回答

4

这与Jsoup没有任何特定的关系,但为什么不使用Set等HashSet来保存有效的字符串呢?然后,如果集合被称为“validTextSet”,你可以很简单,高效地测试,如果文本是集合与

 if (validTextSet.contains(link.text())) { 
     // add link.attr("href") to our container; 
    } 
+0

这是绝对的性能改进,似乎没有这样的已经建立了一个机制进入Jsoup,所以我会很快接受。有趣的是,尽管在高级编程语言中取得了很大的进步,但通过一系列指向函数的指针实现非整数切换/大小写的旧“C”技术在Java中仍然适用(变相)。我也是+1。 – ef2011

+0

@ ef2011:我不惊讶这不是在Jsoup中,因为它实际上不是解析HTML的一部分,而是一旦你得到它,你会如何处理这些信息。另外,我认为HashMap在理论上比switch/case更快,但我可能是错的。 –

+0

这就是我的意思。 'C'中一个**优化的开关/情况实际上是一个变相的HashMap(散列用作数组的即时访问索引)。 – ef2011