Jsoup 파서를 사용 중이고 내 키워드와 일치하는 모든 태그를 찾기 위해 재귀 호출을하고 싶습니다. 문제는 스택 호출이 자식이 발견되지 않으면 첫 번째 태그로 끝나는 것입니다 , (테스트의 첫 번째 경우) 나머지 통화를 마칩니다.재귀 호출에서 스택 누락 Java
노드 이름 = HTML || :
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); } }
이
는 콘솔 인쇄의 결과입니다 노드 children = 2 else 재귀 적 중첩 호출 노드 이름 = head || 노드 children = 10 else 재귀 중첩 호출 노드 이름 = 메타 || 노드 아이들은 = 0 어떤 아이들은
내가 테스트에 사용이 URL을 찾을 수 없습니다이 link
문제가 내 전화로 거기에, 또는 내가 뭔가 놓치고있다?!
답장을 보내 주신 데 감사드립니다. 문제는 iterator가 내가 믿기 때문에 반복문을 사용하여 바뀌었고 더 많은 태그를 반환한다는 것을 알았습니다. 전화 번호는 테스트 용이며 태그를 찾으려고합니다. 전화 번호가 아닌 특정 키워드를 사용하십시오 .. –
답변이 정확하다면 추가 답장 등을 막기 위해 표시해야합니다. –