【发布时间】:2017-09-14 09:24:13
【问题描述】:
我正在使用 Jsoup 解析器并希望进行一些递归调用以查找与我的关键字匹配的所有标签。 问题是堆栈调用在没有找到孩子时以第一个标签结束(第一个 if 测试)并且没有完成其余的关闭调用。
public Set<Element> deepSearch(Element node,String keyword)
{
Pattern searchKeyPattern= Pattern.compile(keyword);
Set<Element> matchedTags = new HashSet<Element>();
System.out.println("Node name = " + node.tagName()+" || Node children = " + node.children().size());
if(searchKeyPattern.matcher(node.ownText()).find())
{
matchedTags.add(node);
System.out.println("matched");
}
if(node.childNodeSize()==0)
{
System.out.println("No children found");
return matchedTags;
}
else
{
System.out.println("else the recursive nested call");
return deepSearch(node.children().iterator().next(),keyword);
}
}
这是控制台打印的结果:
节点名称 = html || Node children = 2 else 递归嵌套调用 节点名称 = 头部 || Node children = 10 否则递归嵌套调用 节点名称 = 元 ||子节点 = 0 未找到子节点
我用来测试的这个网址是link
是我的电话有问题,还是我错过了什么?!
【问题讨论】:
标签: java search recursion stack jsoup