我正在使用 htmlparser (htmlparser.org) 重写输入字符串中的所有链接。
我需要做的就是遍历出现在输入字符串中的所有链接标签 (<a href=...
),获取它们的值,执行一些正则表达式以确定应该如何操作它们,然后更新链接的 href, target 和 onclick 相应的值。
我不确定如何才能只更新输入字符串中的选择链接元素,而不影响输入字符串中的所有其他数据。
看起来 htmlparser 库可以提取某些元素进行操作,但它不能在原始上下文中操作元素,然后返回它们的更新值将保持原始上下文的完整性。
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
这是一个非常简单的示例,但向您展示了如何设置节点迭代器。
public static String setExternalLinkTargets(String html) {
final NodeVisitor linkVisitor = new NodeVisitor() {
@Override
public void visitTag(Tag tag) {
// Process any tag/node in your HTML
String name = tag.getTagName();
// Set the Link's target to _blank if the href is external
if ("a".equalsIgnoreCase(name)) {
if(isExternalLink(url.getHost()) {
tag.setAttribute("target", "_blank");
}
}
}
};
Parser parser = Parser.createParser(html, null);
NodeList list;
try {
list = parser.parse(null);
list.visitAllNodesWith(linkVisitor);
return list.toHtml();
} catch (ParserException e) {
// Could not parse HTML, return original HTML
return html;
}
}
关于java - 如何使用 Java HTMLParser (org.htmlparser) 替换链接的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089517/