private void copySafeNodes(Element source, Element destination) { CleaningVisitor cleaningVisitor = new CleaningVisitor(source, destination); NodeTraversor traversor = new NodeTraversor(cleaningVisitor); traversor.traverse(source); }
/** * Perform a depth-first filtering on each of the selected elements. * @param nodeFilter the filter callbacks to perform on each node * @return this, for chaining */ public Elements filter(NodeFilter nodeFilter) { NodeTraversor.filter(nodeFilter, this); return this; }
/** * Start a depth-first traverse of the root and all of its descendants. * @param root the root node point to traverse. * @deprecated Just use the static {@link NodeTraversor#filter(NodeFilter, Node)} method. */ public void traverse(Node root) { traverse(visitor, root); }
private static String toText(Element element) { final StringBuilder accum = new StringBuilder(); new NodeTraversor(new NodeVisitor() { public void head(Node node, int depth) { if (node instanceof TextNode) { TextNode textNode = (TextNode) node; accum.append(textNode.getWholeText()); } else if (node instanceof Element) { // Do nothing ... } } public void tail(Node node, int depth) { } }).traverse(element); return accum.toString().trim(); }
/** * Perform a depth-first traversal on each of the selected elements. * @param nodeVisitor the visitor callbacks to perform on each node * @return this, for chaining */ public Elements traverse(NodeVisitor nodeVisitor) { NodeTraversor.traverse(nodeVisitor, this); return this; }
new NodeTraversor(new NodeVisitor() { boolean isNewline = true;
private void copySafeNodes(Element source, Element dest) { CleaningVisitor cleaningVisitor = new CleaningVisitor(dest); NodeTraversor traversor = new NodeTraversor(cleaningVisitor); traversor.traverse(source); }
/** * Get the (unencoded) text of all children of this element, including any newlines and spaces present in the * original. * * @return unencoded, un-normalized text * @see #text() */ public String wholeText() { final StringBuilder accum = new StringBuilder(); NodeTraversor.traverse(new NodeVisitor() { public void head(Node node, int depth) { if (node instanceof TextNode) { TextNode textNode = (TextNode) node; accum.append(textNode.getWholeText()); } } public void tail(Node node, int depth) { } }, this); return accum.toString(); }
/** * Perform a depth-first filtering through this node and its descendants. * @param nodeFilter the filter callbacks to perform on each node * @return this node, for chaining */ public Node filter(NodeFilter nodeFilter) { Validate.notNull(nodeFilter); NodeTraversor.filter(nodeFilter, this); return this; }
/** * Format an Element to plain-text * @param element the root element to format * @return formatted text */ public String getPlainText(Element element) { FormattingVisitor formatter = new FormattingVisitor(); NodeTraversor traversor = new NodeTraversor(formatter); traversor.traverse(element); // walk the DOM, and call .head() and .tail() for each node return formatter.toString(); }
private int copySafeNodes(Element source, Element dest) { CleaningVisitor cleaningVisitor = new CleaningVisitor(source, dest); NodeTraversor.traverse(cleaningVisitor, source); return cleaningVisitor.numDiscarded; }
public static Element findFirst(Evaluator eval, Element root) { FirstFinder finder = new FirstFinder(root, eval); NodeTraversor.filter(finder, root); return finder.match; }
@Override public String convert(@Nonnull final String html) throws IOException { final DocumentUtilities.DocumentElement document = DocumentUtilities.parseHtml(html); final DocumentUtilities.BodyElement body = DocumentUtilities.getBody(document); FormattingVisitor formatter = new FormattingVisitor(); NodeTraversor traversor = new NodeTraversor(formatter); traversor.traverse(body.getBody()); // walk the DOM, and call .head() and .tail() for each node return formatter.toString(); }
/** * Perform a depth-first traversal through this node and its descendants. * @param nodeVisitor the visitor callbacks to perform on each node * @return this node, for chaining */ public Node traverse(NodeVisitor nodeVisitor) { Validate.notNull(nodeVisitor); NodeTraversor.traverse(nodeVisitor, this); return this; }
/** * Start a depth-first filtering of all elements. * @param filter Node filter. * @param elements Elements to filter. */ public static void filter(NodeFilter filter, Elements elements) { Validate.notNull(filter); Validate.notNull(elements); for (Element el : elements) if (filter(filter, el) == FilterResult.STOP) break; } }
@Override public Iterator<URL> getEmbeddedResourceURLs(String userAgent, byte[] html, URL baseUrl, URLCollection coll, String encoding) throws HTMLParseException { try { // TODO Handle conditional comments for IE String contents = new String(html,encoding); Document doc = Jsoup.parse(contents); JMeterNodeVisitor nodeVisitor = new JMeterNodeVisitor(new URLPointer(baseUrl), coll); new NodeTraversor(nodeVisitor).traverse(doc); return coll.iterator(); } catch (Exception e) { throw new HTMLParseException(e); } } }
NodeTraversor.traverse(new NodeVisitor() { public void head(Node node, int depth) { if (node instanceof TextNode) {
Document doc = Jsoup.parse(input); NodeTraversor traversor = new NodeTraversor(new NodeVisitor() { @Override public void tail(Node node, int depth) { if (node instanceof Element) { Element e = (Element) node; e.removeAttr("class"); e.removeAttr("style"); } } @Override public void head(Node node, int depth) { } }); traversor.traverse(doc.body()); String modifiedHtml = doc.toString();
/** * Start a depth-first traverse of all elements. * @param visitor Node visitor. * @param elements Elements to filter. */ public static void traverse(NodeVisitor visitor, Elements elements) { Validate.notNull(visitor); Validate.notNull(elements); for (Element el : elements) traverse(visitor, el); }
final List<String> changedContent = new ArrayList<>(); NodeTraversor nd = new NodeTraversor(new NodeVisitor() { nd.traverse(doc.body());